Nice TWiki > Dev > SyntanticClassHierarchy (r1.1 vs. r1.2) TWiki webs:
Dev | Doc | Main | TWiki | Sandbox
Dev . { Changes | Index | Search | Go }
 <<O>>  Difference Topic SyntanticClassHierarchy (r1.2 - 17 Nov 2004 - ArjanB)
Changed:
<
<

        • class JavaConstructor? extends JavaMethod?; Why is this not a Constructor?
>
>

        • class JavaConstructor? extends JavaMethod?; Why is this not a Constructor? Constructor is only used for NiceConstructors.
Changed:
<
<

      • class ClassDefinition? extends MethodContainer?; Rename proposal: AbstractClassDefinition?
>
>

      • class ClassDefinition? extends MethodContainer?; Rename proposal: AbstractClassDefinition? confusing because it can be read as AbstractClass?-Definition.
Changed:
<
<

      • class MethodBodyDefinition? extends MethodImplementation?; The name of this class must be changed or the class removed. Can this be merged into MethodImplementation? itself?
>
>

      • class MethodBodyDefinition? extends MethodImplementation?; The name of this class must be changed or the class removed. Can this be merged into MethodImplementation? itself? It shouldn't be merged. What's wrong with the name?
Changed:
<
<

public static class ClassDefinition?.ClassImplementation; Why are these not Definitions? Also, use of inner classes needs to be broken.

>
>

public static class ClassDefinition?.ClassImplementation; Why are these not Definitions? Also, use of inner classes needs to be broken. Definitions are toplevel and ClassImplementation? is just a part of ClassDefinition?.

Changed:
<
<

  • class StatementExp? extends Expression; How can a statement be an expression? Example?
>
>

  • class StatementExp? extends Expression; How can a statement be an expression? Example? A statment can be viewed as a void returning expression. Only used in IfExp? atm.
Changed:
<
<

  • class MonotypeConstructor? extends Monotype; What is the relationship between a MonotypeConstructor? and a Monotype? Given that we already have Constructors, can this class be renamed?
>
>

  • class MonotypeConstructor? extends Monotype; What is the relationship between a MonotypeConstructor? and a Monotype? Given that we already have Constructors, can this class be renamed? typeconstructor is a typesystem term
Changed:
<
<

abstract class NiceField?; Why aren't fields Definitions?

>
>

abstract class NiceField?; Why aren't fields Definitions? they are a part of NiceClass?

Added:
>
>

  • final class OverridenField? extends NiceField?;
Changed:
<
<

class ACatch; Why is this not a statement?

>
>

class ACatch; Why is this not a statement? It's a helper class for TryStmt? because a try can have multiple catches.

Added:
>
>


 <<O>>  Difference Topic SyntanticClassHierarchy (r1.1 - 17 Nov 2004 - LucPerrin)
Added:
>
>

%META:TOPICINFO{author="LucPerrin" date="1100679591" format="1.0" version="1.1"}% %META:TOPICPARENT{name="NiceCompiler"}% In an attempt to understand better the syntax part of nice, here is the class hierarchy for the bossa.syntax package. I have included questions and comments for discussion.

abstract public class Node;

  • class AST extends Node;

  • class Definition extends Node;

    • class AbstractInterfaceImplementation? extends Definition;

    • class GlobalVarDeclaration? extends Definition;

    • abstract class MethodDeclaration? extends Definition;

      • class Constructor extends MethodDeclaration?;

        • class DefaultConstructor? extends Constructor;

        • class ImportedConstructor? extends Constructor;

      • class FieldAccess? extends MethodDeclaration?;

        • class JavaFieldAccess? extends FieldAccess?;

        • class NiceFieldAccess? extends FieldAccess?;

      • class JavaMethod? extends MethodDeclaration?

        • class JavaConstructor? extends JavaMethod?; Why is this not a Constructor?

        • class RetypedJavaMethod? extends JavaMethod?;

      • class InlinedMethod? extends MethodDeclaration?;

      • class UserOperator? extends MethodDeclaration?;

        • class CustomConstructor? extends UserOperator?; Why is this a UserOperator??

        • class NiceMethod? extends UserOperator?; Why is this a UserOperator??

    • abstract class MethodContainer? extends Definition;

      • class AbstractInterface? extends MethodContainer?;

      • class ClassDefinition? extends MethodContainer?; Rename proposal: AbstractClassDefinition?

        • public static class ClassDefinition?.Interface extends ClassDefinition? Rename proposal: InterfaceDefinition?

        • public static class ClassDefinition?.Class extends ClassDefinition?; Rename proposal: ClassDefinition?

    • abstract class MethodImplementation? extends Definition implements Function;

      • class DefaultMethodImplementation? extends MethodImplementation?;

      • class MethodBodyDefinition? extends MethodImplementation?; The name of this class must be changed or the class removed. Can this be merged into MethodImplementation? itself?

    • class EnumDefinition? extends Definition;

  • abstract class VarSymbol? extends Node; Are symbols really nodes?

    • class MonoSymbol? extends VarSymbol?;

      • class GlobalVarSymbol? extends MonoSymbol?;

    • public class PolySymbol? extends VarSymbol?;

      • class FunSymbol? extends PolySymbol?;

  • class Constraint extends Node; Why is this a node?

  • class FormalParameters? extends Node;

    • public static class FormalParameters?.Parameter

      • public static class FormalParameters?.NamedParameter extends FormalParameters?.Parameter

        • public static class OptionalParameter? extends NamedParameter?

  • public class Polytype extends Node; Why is this a node? Why is Monotype not a node?

public static class ClassDefinition?.ClassImplementation; Why are these not Definitions? Also, use of inner classes needs to be broken.

  • class JavaClass? extends ClassDefinition?.ClassImplementation;

  • abstract class NiceClass? extends ClassDefinition?.ClassImplementation;

    • class CNiceClass? extends NiceClass?;

  • class PrimitiveType? extends ClassDefinition?.ClassImplementation;

class Expression;

* class ConstantExp? extends Expression;

* class NullExp? extends ConstantExp?;

* class VoidConstantExp? extends ConstantExp?;

* class StringConstantExp? extends ConstantExp?;

* class TypeConstantExp? extends ConstantExp?;

  • class PackageExp? extends Expression;

  • class IdentExp? extends Expression;

  • class AssignExp? extends Expression;

  • class CallExp? extends Expression;

  • class NewExp? extends CallExp?;

  • class IfExp? extends Expression;

  • class IncrementExp? extends Expression;

  • class LiteralArrayExp? extends Expression;

  • class TupleExp? extends Expression;

  • class NewArrayExp? extends Expression;

  • class SymbolExp? extends Expression;

  • class OverloadedSymbolExp? extends Expression;

  • class StatementExp? extends Expression; How can a statement be an expression? Example?

  • class SuperExp? extends Expression;

  • class FunExp? extends Expression implements Function;

class AtomicConstraint?;

  • class ImplementsCst? extends AtomicConstraint?;

  • class TypeConstructorLeqCst? extends AtomicConstraint?;

  • class MonotypeLeqCst? extends AtomicConstraint?;

abstract class Statement;

  • public class Block extends Statement;

  • public class BreakStmt? extends Statement;

  • public class BreakLabelStmt? extends Statement;

  • public class ContinueStmt? extends Statement;

  • public class LabeledStmt? extends Statement; (helper)

  • class LoopStmt? extends Statement;

  • abstract class LocalDeclaration? extends Statement;

  • class ReturnStmt? extends Statement;

  • class VoidReturnStmt? extends Statement;

  • class ExpressionStmt? extends Statement;

  • class SynchronizedStmt? extends Statement;

  • class TryStmt? extends Statement;

abstract class Monotype;

  • class Alike extends Monotype;

  • class FunType? extends Monotype;

  • class MonotypeConstructor? extends Monotype; What is the relationship between a MonotypeConstructor? and a Monotype? Given that we already have Constructors, can this class be renamed?

  • class TupleType? extends Monotype;

  • final class TypeIdent? extends Monotype;

abstract class Pattern;

  • class VariablePattern? extends Pattern;

  • class NullPattern? extends Pattern;

  • class NotNullPattern? extends Pattern;

  • class TypePattern? extends Pattern;

  • abstract class ValuePattern? extends Pattern;

    • class BoolPattern? extends ValuePattern?;

    • class StringPattern? extends ValuePattern?;

    • class CharPattern? extends ValuePattern?;

    • class IntPattern? extends ValuePattern?;

      • class IntComparePattern? extends IntPattern?;

    • class ReferencePattern? extends ValuePattern?;

      • class EnumPattern? extends ReferencePattern?;

abstract class NiceField?; Why aren't fields Definitions?

  • final class NewField? extends NiceField?;

class VarScope?;

  • class GlobalVarScope? extends VarScope?;

interface TypeMap?;

  • class TypeMaper? implements TypeMap?;

  • class TypeScope? implements TypeMap?;

    • class GlobalTypeScope? extends TypeScope?;

// Misceallaneous

class Arguments;

class Contract;

class LocatedString?;

final class ValueOverride?;

class ACatch; Why is this not a statement?

// Helpers:

class JavaClasses?

final class NiceUtils?;

final class TypeConstructors?;

class TypeParameters?;

class Info (analyse.nice)

// Other

interface Macro extends gnu.expr.Inlineable

interface Module extends mlsub.compilation.Module

interface Function;

// Exceptions

class DuplicateIdentEx? extends Exception;

class UnknownIdentException? extends bossa.util.UserError;

-- LucPerrin - 17 Nov 2004


Topic SyntanticClassHierarchy . { View | Diffs | r1.3 | > | r1.2 | > | r1.1 | More }
Revision r1.1 - 17 Nov 2004 - 08:19 GMT - LucPerrin
Revision r1.2 - 17 Nov 2004 - 18:29 GMT - ArjanB
Copyright © 1999-2003 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback.