Mercurial > projects > dil
diff trunk/src/SyntaxTree.d @ 276:d6b2f7616ca5
- Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
- Added mixin(set_kind) statement to every constructor that inherits from Expression.
author | aziz |
---|---|
date | Mon, 06 Aug 2007 15:01:02 +0000 |
parents | e8de572e4d01 |
children | 38a68e534a3b |
line wrap: on
line diff
--- a/trunk/src/SyntaxTree.d Mon Aug 06 14:00:03 2007 +0000 +++ b/trunk/src/SyntaxTree.d Mon Aug 06 15:01:02 2007 +0000 @@ -14,9 +14,99 @@ Other } +enum NodeKind +{ + Expression, + EmptyExpression, + BinaryExpression, + CondExpression, + CommaExpression, + OrOrExpression, + AndAndExpression, + OrExpression, + XorExpression, + AndExpression, + CmpExpression, + EqualExpression, + IdentityExpression, + RelExpression, + InExpression, + LShiftExpression, + RShiftExpression, + URShiftExpression, + PlusExpression, + MinusExpression, + CatExpression, + MulExpression, + DivExpression, + ModExpression, + AssignExpression, + LShiftAssignExpression, + RShiftAssignExpression, + URShiftAssignExpression, + OrAssignExpression, + AndAssignExpression, + PlusAssignExpression, + MinusAssignExpression, + DivAssignExpression, + MulAssignExpression, + ModAssignExpression, + XorAssignExpression, + CatAssignExpression, + UnaryExpression, + AddressExpression, + PreIncrExpression, + PreDecrExpression, + PostIncrExpression, + PostDecrExpression, + DerefExpression, + SignExpression, + NotExpression, + CompExpression, + PostDotListExpression, + CallExpression, + NewExpression, + NewAnonClassExpression, + DeleteExpression, + CastExpression, + IndexExpression, + SliceExpression, + PrimaryExpressio, + IdentifierExpression, + DotListExpression, + TemplateInstanceExpression, + ThisExpression, + SuperExpression, + NullExpression, + DollarExpression, + BoolExpression, + IntNumberExpression, + RealNumberExpression, + CharLiteralExpression, + StringLiteralsExpression, + ArrayLiteralExpression, + AssocArrayLiteralExpression, + AssertExpression, + MixinExpression, + ImportExpression, + TypeofExpression, + TypeDotIdExpression, + TypeidExpression, + IsExpression, + FunctionLiteralExpression, + TraitsExpression, // D2.0 + VoidInitializer, + ArrayInitializer, + StructInitializer, +} + +/// This string is mixed in into the constructor of a class that inherits from Node. +const string set_kind = `this.kind = mixin("NodeKind." ~ typeof(this).stringof);`; + class Node { NodeCategory category; + NodeKind kind; Token* begin, end; this(NodeCategory category)