Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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");
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        private bool Analyze(CommonTree tree, TypeStorage types, ILogger logger)
        {
            var semanticAnalyser = new SemanticAnalyser(types, logger);

            return(semanticAnalyser.Check(tree));
        }