Mercurial > projects > dil
diff trunk/src/dil/Module.d @ 365:ed67acc82268
- Added option includes to config.d.
- Added methods getName() and getPackageName() to class ModuleDeclaration.
- Added method isNonReservedIdentifier() to class Lexer.
- Added private member parser to class Module.
- Initializing members moduleName and packageName in Module.parse().
author | aziz |
---|---|
date | Fri, 31 Aug 2007 11:07:05 +0000 |
parents | 1059295c2727 |
children | dcbd3bf9bf74 |
line wrap: on
line diff
--- a/trunk/src/dil/Module.d Fri Aug 31 00:53:00 2007 +0000 +++ b/trunk/src/dil/Module.d Fri Aug 31 11:07:05 2007 +0000 @@ -6,7 +6,9 @@ import dil.SyntaxTree; import dil.Declarations; import dil.Parser; +import dil.Lexer; import dil.File; +import std.path; class Module { @@ -16,6 +18,7 @@ Declarations root; /// The root of the AST. ImportDeclaration[] imports; ModuleDeclaration moduleDecl; + private Parser parser; this(string fileName) { @@ -25,7 +28,7 @@ void parse() { auto sourceText = loadFile(fileName); - auto parser = new Parser(sourceText, fileName); + this.parser = new Parser(sourceText, fileName); parser.start(); this.root = parser.parseModule(); @@ -34,6 +37,17 @@ { // moduleDecl will be null if first node can't be casted to ModuleDeclaration. this.moduleDecl = Cast!(ModuleDeclaration)(root.children[0]); + if (moduleDecl) + { + this.moduleName = moduleDecl.getName(); + this.packageName = moduleDecl.getPackageName('/'); + } + else + { + auto str = getBaseName(getName(fileName)); + if (Lexer.isNonReservedIdentifier(str)) + this.moduleName = str; + } this.imports = parser.imports; }