浏览代码

Added proper definitions for parsing modules during dependency walking

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8264 8c9fc860-2736-0410-a75d-ab315db34111
negelef 7 年之前
父节点
当前提交
49288f65a4
共有 3 个文件被更改,包括 7 次插入5 次删除
  1. 6 4
      tools/builds/a2/DependencyWalker.Mod
  2. 1 1
      tools/builds/a2/makefile
  3. 二进制
      tools/builds/a2/original

+ 6 - 4
tools/builds/a2/DependencyWalker.Mod

@@ -2,14 +2,14 @@ MODULE DependencyWalker;
 
 IMPORT Commands, Diagnostics, Files, Options, Streams, FoxBasic, FoxGlobal, FoxParser, FoxScanner, FoxSyntaxTree;
 
-PROCEDURE Process (CONST moduleName, fileExtension: ARRAY OF CHAR; diagnostics: Diagnostics.Diagnostics; writer: Streams.Writer): BOOLEAN;
+PROCEDURE Process (CONST moduleName, definitions, fileExtension: ARRAY OF CHAR; diagnostics: Diagnostics.Diagnostics; writer: Streams.Writer): BOOLEAN;
 VAR reader: Streams.Reader; scanner: FoxScanner.Scanner; parser: FoxParser.Parser;
 VAR module: FoxSyntaxTree.Module; import: FoxSyntaxTree.Import; string: ARRAY 64 OF CHAR;
 BEGIN
 	reader := FoxBasic.GetFileReader (moduleName);
 	IF reader = NIL THEN diagnostics.Error (moduleName, Streams.Invalid, "Failed to open module"); RETURN FALSE END;
 	scanner := FoxScanner.NewScanner (moduleName, reader, 0, diagnostics);
-	NEW (parser, scanner, diagnostics, "");
+	NEW (parser, scanner, diagnostics, definitions);
 	module := parser.Module ();
 	IF parser.error THEN RETURN FALSE END;
 	FoxGlobal.ModuleFileName (module.name, module.context, string);
@@ -37,13 +37,15 @@ END Process;
 
 PROCEDURE Walk* (context: Commands.Context);
 VAR options : Options.Options; diagnostics : Diagnostics.StreamDiagnostics;
-VAR fileExtension: Options.Parameter; moduleName: Files.FileName;
+VAR definitions, fileExtension: Options.Parameter; moduleName: Files.FileName;
 BEGIN
 	NEW (options);
+	options.Add ('d', "define", Options.String);
 	options.Add ('e', "fileExtension", Options.String);
 	IF ~options.Parse (context.arg, context.error) THEN
 		context.result := Commands.CommandParseError; RETURN;
 	END;
+	IF ~options.GetString ("define", definitions) THEN definitions := "" END;
 	IF ~options.GetString ("fileExtension", fileExtension) THEN fileExtension := ".Sym" END;
 
 	NEW (diagnostics, context.error);
@@ -51,7 +53,7 @@ BEGIN
 		context.arg.SkipWhitespace;
 		context.arg.String (moduleName);
 		IF moduleName = "" THEN EXIT END;
-		IF ~Process (moduleName, fileExtension, diagnostics, context.out) THEN
+		IF ~Process (moduleName, definitions, fileExtension, diagnostics, context.out) THEN
 			context.result := Commands.CommandError; RETURN;
 		END;
 	END;

+ 1 - 1
tools/builds/a2/makefile

@@ -20,7 +20,7 @@ modules: source/Release.Tool
 	@AOSPATH=source ./original Release.Build --list $(target) | tr -d '\r' | grep "^[^ ]\+\.Mod\s" | tr -d ' ' > $@
 
 dependencies: modules source/*.Mod
-	@./original DependencyWalker.Walk --fileExtension=$(object) $(addprefix source/, $(shell sort -u modules)) DependencyWalker.Mod | tr -d '\r' | grep "^.\+\$(object):" > $@
+	@./original DependencyWalker.Walk --define=UNIX,AMD64 --fileExtension=$(object) $(addprefix source/, $(shell sort -u modules)) DependencyWalker.Mod | tr -d '\r' | grep "^.\+\$(object):" > $@
 
 -include dependencies
 FoxArrayBase$(object): ComplexNumbers$(object)

二进制
tools/builds/a2/original