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)