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

      • 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?
>
>

      • 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? The name is confusing because of the switch from definition to implementation, and back to definition. Is this a definition or implementation of a method? How is it different than the super class?

 <<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.3 - 18 Nov 2004 - 00:21 GMT - LucPerrin
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.