private static void CompileFile(Stream fileStream, string fileName, StreamWriter outStream, TypeStorage typeStorage, ILogger logger, ILogger treeLogger, INameConvertor nameConvertor) { logger.Log(String.Format("----Файл {0}----", fileName)); var stream = new ANTLRInputStream(fileStream); var lexer = new PlsqlLexer(stream); var parser = new PlsqlParser(new CommonTokenStream(lexer)); var tree = parser.program().Tree as CommonTree; if (treeLogger != null) { treeLogger.Log(ASTPrinter.Print(tree)); } var semanticAnalyser = new SemanticAnalyser(typeStorage, logger); bool res = semanticAnalyser.Check(tree); if (res) { var optimizer = new Optimizer(); optimizer.Optimize(tree); var codegenerator = new Codegenerator(nameConvertor); string code = codegenerator.Generate(tree, typeStorage); outStream.Write(code); } logger.Log(string.Format("--------", fileName)); }
static void Main(string[] args) { if (args.Length < 1) { Console.WriteLine("No arguments"); return; } //string file = "semanticsTest.kxi"; string file = args[0]; LexicalAnalyser scanner = new LexicalAnalyser(file); SyntaxAnalyser syntaxAnalyser = new SyntaxAnalyser(scanner); syntaxAnalyser.go(); //syntaxAnalyser.printTable(); SemanticAnalyser semanticsAnalyser = new SemanticAnalyser(new LexicalAnalyser(file), syntaxAnalyser.symTable); semanticsAnalyser.go(); //semanticsAnalyser.printTable(); //semanticsAnalyser.PrintICode(); TargetCode target = new TargetCode(semanticsAnalyser.quads, semanticsAnalyser.symTable); target.go(); target.PrintTCode(); VM.go("output.asm"); //Console.ReadKey(); }
static void Main(string[] args) { var intermediateContractDefinition = LoadIntermediateContractDefinition(@"{your repo path}\NLIC\NL.IC.Generator.Core\Mediating\IntermediateContractDefinition.config"); var markdownDocument = new MarkdownDocument(); markdownDocument.Parse(ReadDocument(@"{your repo path}\NLIC\NL.IC.Generator.Core\SemanticDocument.md")); if (IsValid(markdownDocument, "Natural Language Document") && IsValid(intermediateContractDefinition, "Intermediate Contract Definition")) { SemanticAnalyser semanticAnalyser = new SemanticAnalyser(); var semanticGraph = semanticAnalyser.Analyse(markdownDocument, intermediateContractDefinition); Serialize(semanticGraph, @"{your repo path}\NLIC\NL.IC.Generator.Core\SemanticGraph.generated.xml"); Mediator mediator = new Mediator(); var intermediateContract = mediator.Mediate(semanticGraph); intermediateContract.Save(@"{your repo path}\NLIC\NL.IC.Generator.Core\IntermediateContract.generated.xml"); } }
public override bool Compile() { ArrayList code_items = new ArrayList(); foreach (IVsaItem item in Items) { if (item is IVsaCodeItem) { code_items.Add(item); } else if (item is IVsaReferenceItem) { continue; } else { throw new Exception("FIXME: VsaItemType.AppGlobal"); } } Parser parser = new Parser(code_items); ScriptBlock [] blocks = parser.ParseAll(); if (blocks != null) { SemanticAnalyser.Run(blocks, (Assembly [])GetOption("assemblies")); object outfile = GetOption("out"); if (outfile == null) { CodeGenerator.Run((string)GetOption("first_source"), blocks); } else { CodeGenerator.Run((string)outfile, blocks); } Console.WriteLine("Compilation succeeded"); } return(false); }
private bool Analyze(CommonTree tree, TypeStorage types, ILogger logger) { var semanticAnalyser = new SemanticAnalyser(types, logger); return(semanticAnalyser.Check(tree)); }