changeset 580:fa6d3c52757d

Moved SyntaxTree.d to new package 'ast'.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sat, 05 Jan 2008 17:49:55 +0100
parents 90d0cff4107e
children 61f9784aaf2a
files trunk/src/cmd/Generate.d trunk/src/cmd/ImportGraph.d trunk/src/dil/Declarations.d trunk/src/dil/Expressions.d trunk/src/dil/Module.d trunk/src/dil/Semantics.d trunk/src/dil/SettingsLoader.d trunk/src/dil/Statements.d trunk/src/dil/Symbol.d trunk/src/dil/Symbols.d trunk/src/dil/SyntaxTree.d trunk/src/dil/Types.d trunk/src/dil/ast/Node.d trunk/src/dil/parser/ImportParser.d trunk/src/dil/parser/Parser.d trunk/src/main.d
diffstat 16 files changed, 307 insertions(+), 303 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/cmd/Generate.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/cmd/Generate.d	Sat Jan 05 17:49:55 2008 +0100
@@ -4,7 +4,7 @@
 +/
 module cmd.Generate;
 
-import dil.SyntaxTree;
+import dil.ast.Node;
 import dil.Token;
 import dil.parser.Parser;
 import dil.lexer.Lexer;
--- a/trunk/src/cmd/ImportGraph.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/cmd/ImportGraph.d	Sat Jan 05 17:49:55 2008 +0100
@@ -3,7 +3,8 @@
   License: GPL3
 +/
 module cmd.ImportGraph;
-import dil.SyntaxTree;
+
+import dil.ast.Node;
 import dil.Declarations;
 import dil.Token;
 import dil.File;
--- a/trunk/src/dil/Declarations.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Declarations.d	Sat Jan 05 17:49:55 2008 +0100
@@ -4,7 +4,7 @@
 +/
 module dil.Declarations;
 
-import dil.SyntaxTree;
+import dil.ast.Node;
 import dil.Expressions;
 import dil.Types;
 import dil.Statements;
--- a/trunk/src/dil/Expressions.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Expressions.d	Sat Jan 05 17:49:55 2008 +0100
@@ -3,7 +3,8 @@
   License: GPL3
 +/
 module dil.Expressions;
-import dil.SyntaxTree;
+
+import dil.ast.Node;
 import dil.Token;
 import dil.Types;
 import dil.Declarations;
@@ -943,6 +944,7 @@
   {
     if (type)
       return this;
+    return this;
   }
 
   char[] getString()
--- a/trunk/src/dil/Module.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Module.d	Sat Jan 05 17:49:55 2008 +0100
@@ -4,7 +4,7 @@
 +/
 module dil.Module;
 
-import dil.SyntaxTree;
+import dil.ast.Node;
 import dil.Declarations;
 import dil.parser.Parser;
 import dil.parser.ImportParser;
--- a/trunk/src/dil/Semantics.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Semantics.d	Sat Jan 05 17:49:55 2008 +0100
@@ -4,10 +4,10 @@
 +/
 module dil.Semantics;
 
+import dil.ast.Node;
 import dil.Expressions;
 import dil.Token;
 import dil.Scope;
-import dil.SyntaxTree;
 import dil.IdTable;
 import common;
 
--- a/trunk/src/dil/SettingsLoader.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/SettingsLoader.d	Sat Jan 05 17:49:55 2008 +0100
@@ -6,7 +6,7 @@
 
 import dil.Settings;
 import dil.Messages;
-import dil.Module, dil.SyntaxTree, dil.Declarations, dil.Expressions;
+import dil.Module, dil.ast.Node, dil.Declarations, dil.Expressions;
 import dil.File;
 import tango.io.FilePath;
 import common;
--- a/trunk/src/dil/Statements.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Statements.d	Sat Jan 05 17:49:55 2008 +0100
@@ -3,7 +3,8 @@
   License: GPL3
 +/
 module dil.Statements;
-import dil.SyntaxTree;
+
+import dil.ast.Node;
 import dil.Expressions;
 import dil.Declarations;
 import dil.Types;
--- a/trunk/src/dil/Symbol.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Symbol.d	Sat Jan 05 17:49:55 2008 +0100
@@ -4,7 +4,7 @@
 +/
 module dil.Symbol;
 
-import dil.SyntaxTree;
+import dil.ast.Node;
 import common;
 
 /// Symbol IDs.
--- a/trunk/src/dil/Symbols.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Symbols.d	Sat Jan 05 17:49:55 2008 +0100
@@ -6,7 +6,7 @@
 
 import dil.Symbol;
 import dil.SymbolTable;
-import dil.SyntaxTree;
+import dil.ast.Node;
 import dil.Enums;
 import dil.TypeSystem;
 import dil.Identifier;
--- a/trunk/src/dil/SyntaxTree.d	Sat Jan 05 17:32:27 2008 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-/++
-  Author: Aziz Köksal
-  License: GPL3
-+/
-module dil.SyntaxTree;
-import dil.Token;
-import common;
-
-enum NodeCategory
-{
-  Declaration,
-  Statement,
-  Expression,
-  Type,
-  Other
-}
-
-enum NodeKind
-{
-  // Declarations:
-  Declarations,
-  EmptyDeclaration,
-  IllegalDeclaration,
-  ModuleDeclaration,
-  ImportDeclaration,
-  AliasDeclaration,
-  TypedefDeclaration,
-  EnumDeclaration,
-  ClassDeclaration,
-  InterfaceDeclaration,
-  StructDeclaration,
-  UnionDeclaration,
-  ConstructorDeclaration,
-  StaticConstructorDeclaration,
-  DestructorDeclaration,
-  StaticDestructorDeclaration,
-  FunctionDeclaration,
-  VariableDeclaration,
-  InvariantDeclaration,
-  UnittestDeclaration,
-  DebugDeclaration,
-  VersionDeclaration,
-  StaticIfDeclaration,
-  StaticAssertDeclaration,
-  TemplateDeclaration,
-  NewDeclaration,
-  DeleteDeclaration,
-  AttributeDeclaration,
-  ProtectionDeclaration,
-  StorageClassDeclaration,
-  LinkageDeclaration,
-  AlignDeclaration,
-  PragmaDeclaration,
-  MixinDeclaration,
-
-  // Statements:
-  Statements,
-  IllegalStatement,
-  EmptyStatement,
-  ScopeStatement,
-  LabeledStatement,
-  ExpressionStatement,
-  DeclarationStatement,
-  IfStatement,
-  ConditionalStatement,
-  WhileStatement,
-  DoWhileStatement,
-  ForStatement,
-  ForeachStatement,
-  ForeachRangeStatement, // D2.0
-  SwitchStatement,
-  CaseStatement,
-  DefaultStatement,
-  ContinueStatement,
-  BreakStatement,
-  ReturnStatement,
-  GotoStatement,
-  WithStatement,
-  SynchronizedStatement,
-  TryStatement,
-  CatchBody,
-  FinallyBody,
-  ScopeGuardStatement,
-  ThrowStatement,
-  VolatileStatement,
-  AsmStatement,
-  AsmInstruction,
-  AsmAlignStatement,
-  IllegalAsmInstruction,
-  PragmaStatement,
-  MixinStatement,
-  StaticIfStatement,
-  StaticAssertStatement,
-  DebugStatement,
-  VersionStatement,
-
-  // Expressions:
-  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,
-  SpecialTokenExpression,
-  DotExpression,
-  DotListExpression,
-  TemplateInstanceExpression,
-  ThisExpression,
-  SuperExpression,
-  NullExpression,
-  DollarExpression,
-  BoolExpression,
-  IntExpression,
-  RealExpression,
-  ComplexExpression,
-  CharExpression,
-  StringExpression,
-  ArrayLiteralExpression,
-  AArrayLiteralExpression,
-  AssertExpression,
-  MixinExpression,
-  ImportExpression,
-  TypeofExpression,
-  TypeDotIdExpression,
-  TypeidExpression,
-  IsExpression,
-  FunctionLiteralExpression,
-  TraitsExpression, // D2.0
-  VoidInitializer,
-  ArrayInitializer,
-  StructInitializer,
-  AsmTypeExpression,
-  AsmOffsetExpression,
-  AsmSegExpression,
-  AsmPostBracketExpression,
-  AsmBracketExpression,
-  AsmLocalSizeExpression,
-  AsmRegisterExpression,
-
-  // Types:
-  IntegralType,
-  UndefinedType,
-  DotType,
-  DotListType,
-  IdentifierType,
-  TypeofType,
-  TemplateInstanceType,
-  PointerType,
-  ArrayType,
-  FunctionType,
-  DelegateType,
-  CFuncPointerType,
-  ConstType, // D2.0
-  InvariantType, // D2.0
-
-  // Other:
-  FunctionBody,
-  Parameter,
-  Parameters,
-  BaseClass,
-  TemplateAliasParameter,
-  TemplateTypeParameter,
-  TemplateThisParameter, // D2.0
-  TemplateValueParameter,
-  TemplateTupleParameter,
-  TemplateParameters,
-  TemplateArguments,
-  EnumMember,
-}
-
-/// This string is mixed into the constructor of a class that inherits from Node.
-const string set_kind = `this.kind = mixin("NodeKind." ~ typeof(this).stringof);`;
-
-Class TryCast(Class)(Node n)
-{
-  assert(n !is null);
-  if (n.kind == mixin("NodeKind." ~ typeof(Class).stringof))
-    return cast(Class)cast(void*)n;
-  return null;
-}
-
-Class CastTo(Class)(Node n)
-{
-  assert(n !is null && n.kind == mixin("NodeKind." ~ typeof(Class).stringof));
-  return cast(Class)cast(void*)n;
-}
-
-class Node
-{
-  NodeCategory category;
-  NodeKind kind;
-  Node[] children;
-  Token* begin, end;
-
-  this(NodeCategory category)
-  {
-    this.category = category;
-  }
-
-  void setTokens(Token* begin, Token* end)
-  {
-    this.begin = begin;
-    this.end = end;
-  }
-
-  Class setToks(Class)(Class node)
-  {
-    node.setTokens(this.begin, this.end);
-    return node;
-  }
-
-  void addChild(Node child)
-  {
-    assert(child !is null, "failed in " ~ this.classinfo.name);
-    this.children ~= child;
-  }
-
-  void addOptChild(Node child)
-  {
-    child is null || addChild(child);
-  }
-
-  void addChildren(Node[] children)
-  {
-    assert(children !is null && delegate{
-      foreach (child; children)
-        if (child is null)
-          return false;
-      return true; }(),
-      "failed in " ~ this.classinfo.name
-    );
-    this.children ~= children;
-  }
-
-  void addOptChildren(Node[] children)
-  {
-    children is null || addChildren(children);
-  }
-}
--- a/trunk/src/dil/Types.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/Types.d	Sat Jan 05 17:49:55 2008 +0100
@@ -4,7 +4,7 @@
 +/
 module dil.Types;
 
-import dil.SyntaxTree;
+import dil.ast.Node;
 import dil.Token;
 import dil.Expressions;
 import dil.Enums;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trunk/src/dil/ast/Node.d	Sat Jan 05 17:49:55 2008 +0100
@@ -0,0 +1,289 @@
+/++
+  Author: Aziz Köksal
+  License: GPL3
++/
+module dil.ast.Node;
+import dil.Token;
+import common;
+
+enum NodeCategory
+{
+  Declaration,
+  Statement,
+  Expression,
+  Type,
+  Other
+}
+
+enum NodeKind
+{
+  // Declarations:
+  Declarations,
+  EmptyDeclaration,
+  IllegalDeclaration,
+  ModuleDeclaration,
+  ImportDeclaration,
+  AliasDeclaration,
+  TypedefDeclaration,
+  EnumDeclaration,
+  ClassDeclaration,
+  InterfaceDeclaration,
+  StructDeclaration,
+  UnionDeclaration,
+  ConstructorDeclaration,
+  StaticConstructorDeclaration,
+  DestructorDeclaration,
+  StaticDestructorDeclaration,
+  FunctionDeclaration,
+  VariableDeclaration,
+  InvariantDeclaration,
+  UnittestDeclaration,
+  DebugDeclaration,
+  VersionDeclaration,
+  StaticIfDeclaration,
+  StaticAssertDeclaration,
+  TemplateDeclaration,
+  NewDeclaration,
+  DeleteDeclaration,
+  AttributeDeclaration,
+  ProtectionDeclaration,
+  StorageClassDeclaration,
+  LinkageDeclaration,
+  AlignDeclaration,
+  PragmaDeclaration,
+  MixinDeclaration,
+
+  // Statements:
+  Statements,
+  IllegalStatement,
+  EmptyStatement,
+  ScopeStatement,
+  LabeledStatement,
+  ExpressionStatement,
+  DeclarationStatement,
+  IfStatement,
+  ConditionalStatement,
+  WhileStatement,
+  DoWhileStatement,
+  ForStatement,
+  ForeachStatement,
+  ForeachRangeStatement, // D2.0
+  SwitchStatement,
+  CaseStatement,
+  DefaultStatement,
+  ContinueStatement,
+  BreakStatement,
+  ReturnStatement,
+  GotoStatement,
+  WithStatement,
+  SynchronizedStatement,
+  TryStatement,
+  CatchBody,
+  FinallyBody,
+  ScopeGuardStatement,
+  ThrowStatement,
+  VolatileStatement,
+  AsmStatement,
+  AsmInstruction,
+  AsmAlignStatement,
+  IllegalAsmInstruction,
+  PragmaStatement,
+  MixinStatement,
+  StaticIfStatement,
+  StaticAssertStatement,
+  DebugStatement,
+  VersionStatement,
+
+  // Expressions:
+  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,
+  SpecialTokenExpression,
+  DotExpression,
+  DotListExpression,
+  TemplateInstanceExpression,
+  ThisExpression,
+  SuperExpression,
+  NullExpression,
+  DollarExpression,
+  BoolExpression,
+  IntExpression,
+  RealExpression,
+  ComplexExpression,
+  CharExpression,
+  StringExpression,
+  ArrayLiteralExpression,
+  AArrayLiteralExpression,
+  AssertExpression,
+  MixinExpression,
+  ImportExpression,
+  TypeofExpression,
+  TypeDotIdExpression,
+  TypeidExpression,
+  IsExpression,
+  FunctionLiteralExpression,
+  TraitsExpression, // D2.0
+  VoidInitializer,
+  ArrayInitializer,
+  StructInitializer,
+  AsmTypeExpression,
+  AsmOffsetExpression,
+  AsmSegExpression,
+  AsmPostBracketExpression,
+  AsmBracketExpression,
+  AsmLocalSizeExpression,
+  AsmRegisterExpression,
+
+  // Types:
+  IntegralType,
+  UndefinedType,
+  DotType,
+  DotListType,
+  IdentifierType,
+  TypeofType,
+  TemplateInstanceType,
+  PointerType,
+  ArrayType,
+  FunctionType,
+  DelegateType,
+  CFuncPointerType,
+  ConstType, // D2.0
+  InvariantType, // D2.0
+
+  // Other:
+  FunctionBody,
+  Parameter,
+  Parameters,
+  BaseClass,
+  TemplateAliasParameter,
+  TemplateTypeParameter,
+  TemplateThisParameter, // D2.0
+  TemplateValueParameter,
+  TemplateTupleParameter,
+  TemplateParameters,
+  TemplateArguments,
+  EnumMember,
+}
+
+/// This string is mixed into the constructor of a class that inherits from Node.
+const string set_kind = `this.kind = mixin("NodeKind." ~ typeof(this).stringof);`;
+
+Class TryCast(Class)(Node n)
+{
+  assert(n !is null);
+  if (n.kind == mixin("NodeKind." ~ typeof(Class).stringof))
+    return cast(Class)cast(void*)n;
+  return null;
+}
+
+Class CastTo(Class)(Node n)
+{
+  assert(n !is null && n.kind == mixin("NodeKind." ~ typeof(Class).stringof));
+  return cast(Class)cast(void*)n;
+}
+
+class Node
+{
+  NodeCategory category;
+  NodeKind kind;
+  Node[] children;
+  Token* begin, end;
+
+  this(NodeCategory category)
+  {
+    this.category = category;
+  }
+
+  void setTokens(Token* begin, Token* end)
+  {
+    this.begin = begin;
+    this.end = end;
+  }
+
+  Class setToks(Class)(Class node)
+  {
+    node.setTokens(this.begin, this.end);
+    return node;
+  }
+
+  void addChild(Node child)
+  {
+    assert(child !is null, "failed in " ~ this.classinfo.name);
+    this.children ~= child;
+  }
+
+  void addOptChild(Node child)
+  {
+    child is null || addChild(child);
+  }
+
+  void addChildren(Node[] children)
+  {
+    assert(children !is null && delegate{
+      foreach (child; children)
+        if (child is null)
+          return false;
+      return true; }(),
+      "failed in " ~ this.classinfo.name
+    );
+    this.children ~= children;
+  }
+
+  void addOptChildren(Node[] children)
+  {
+    children is null || addChildren(children);
+  }
+}
--- a/trunk/src/dil/parser/ImportParser.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/parser/ImportParser.d	Sat Jan 05 17:49:55 2008 +0100
@@ -4,12 +4,12 @@
 +/
 module dil.parser.ImportParser;
 
+import dil.ast.Node;
 import dil.parser.Parser;
 import dil.Token;
 import dil.Enums;
 import dil.Declarations;
 import dil.Statements;
-import dil.SyntaxTree;
 import common;
 
 private alias TOK T;
--- a/trunk/src/dil/parser/Parser.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/dil/parser/Parser.d	Sat Jan 05 17:49:55 2008 +0100
@@ -5,7 +5,7 @@
 module dil.parser.Parser;
 
 import dil.lexer.Lexer;
-import dil.SyntaxTree;
+import dil.ast.Node;
 import dil.Token;
 import dil.Messages;
 import dil.Information;
--- a/trunk/src/main.d	Sat Jan 05 17:32:27 2008 +0100
+++ b/trunk/src/main.d	Sat Jan 05 17:49:55 2008 +0100
@@ -12,7 +12,7 @@
 import dil.SettingsLoader;
 import dil.CompilerInfo;
 import dil.Module;
-import dil.Declarations, dil.Expressions, dil.SyntaxTree;
+import dil.Declarations, dil.Expressions, dil.ast.Node;
 import dil.Information;
 import dil.File;
 import cmd.Generate;