public void HashFile(DMASTFile node) { var traveler = new TopLevelTraveler(); traveler.VisitDefine = HashDefine; traveler.Travel(node); }
private static bool Compile(List <Token> preprocessedTokens) { DMLexer dmLexer = new DMLexer(null, preprocessedTokens); DMParser dmParser = new DMParser(dmLexer, !Settings.SuppressUnimplementedWarnings); VerbosePrint("Parsing"); DMASTFile astFile = dmParser.File(); if (dmParser.Warnings.Count > 0) { foreach (CompilerWarning warning in dmParser.Warnings) { Warning(warning); } } if (dmParser.Errors.Count > 0) { foreach (CompilerError error in dmParser.Errors) { Error(error); } } if (astFile == null) { return(false); } DMASTSimplifier astSimplifier = new DMASTSimplifier(); VerbosePrint("Constant folding"); astSimplifier.SimplifyAST(astFile); DMObjectBuilder dmObjectBuilder = new DMObjectBuilder(); dmObjectBuilder.BuildObjectTree(astFile); if (ErrorCount > 0) { return(false); } return(true); }
public void BuildObjectTree(DMASTFile astFile) { DMObjectTree.Reset(); ProcessFile(astFile); // TODO Nuke this pass foreach (DMObject dmObject in DMObjectTree.AllObjects) { dmObject.CreateInitializationProc(); } foreach (DMProc proc in DMObjectTree.AllProcs) { proc.Compile(); } DMObjectTree.CreateGlobalInitProc(); }
public void BuildObjectTree(DMASTFile astFile) { DMObjectTree.Reset(); ProcessFile(astFile); foreach (DMObject dmObject in DMObjectTree.AllObjects) { dmObject.CompileProcs(); } DMObject root = DMObjectTree.GetDMObject(DreamPath.Root); foreach (DMProc gProc in DMObjectTree.GlobalProcs.Values) { gProc.Compile(root); } DMObjectTree.CreateGlobalInitProc(); }
public void ProcessFile(DMASTFile file) { _currentObject = DMObjectTree.GetDMObject(DreamPath.Root); ProcessBlockInner(file.BlockInner); }
public void VisitFile(DMASTFile dmFile) { dmFile.BlockInner.Visit(this); }
public void Travel(DMASTFile root) { Travel(root.BlockInner); }