Example #1
0
        public CParser CreateParser(string code)
        {
            ICharStream stream = CharStreams.fromstring(code);
            var         lexer  = new CLexer(stream);

            lexer.AddErrorListener(new ThrowExceptionErrorListener());
            ITokenStream tokens = new CommonTokenStream(lexer);
            var          parser = new CParser(tokens);

            parser.BuildParseTree = true;
            parser.RemoveErrorListeners();
            parser.AddErrorListener(new ThrowExceptionErrorListener());
            return(parser);
        }
Example #2
0
        public IFile ParseFile()
        {
            using (var def = Lifetime.Define())
            {
                var builder  = new PsiBuilder(myLexer, SpringFileNodeType.Instance, new TokenFactory(), def.Lifetime);
                var fileMark = builder.Mark();

                var parser = new CParser(new CommonTokenStream(new CLexer(new AntlrInputStream(myLexer.Buffer.GetText()))));
                parser.AddErrorListener(new ErrorListener(builder));
                new Visitor(builder).Visit(parser.compilationUnit());

                builder.Done(fileMark, SpringFileNodeType.Instance, null);
                var file = (IFile)builder.BuildTree();
                return(file);
            }
        }
        public string Compile(ICharStream cSource)
        {
            CLexer            lexer  = new CLexer(cSource);
            CommonTokenStream tokens = new CommonTokenStream(lexer);
            CParser           parser = new CParser(tokens);

            parser.RemoveErrorListeners();

            parser.AddErrorListener(this);

            try
            {
                CParser.CompilationUnitContext compilationUnit = parser.compilationUnit();
                ParseTreeWalker walker = new ParseTreeWalker();

                walker.Walk(this, compilationUnit);

                string idents = "";

                foreach (CIdentifier ident in CIdentifier.FileScopeIdentifiers)
                {
                    if (ident.Name.Equals("main"))
                    {
                        idents = ident.Emit() + idents;
                    }
                    else
                    {
                        idents += ident.Emit();
                    }
                }

                return(idents);
            }
            catch (SemanticException e)
            {
                m_outStream.WriteLine("Compilation Failed: " + e.Message);
                return(null);
            }
        }
Example #4
0
        public IFile ParseFile()
        {
            using (var def = Lifetime.Define())
            {
                var builder = new PsiBuilder(new CILexer(myLexer.Buffer), SpringFileNodeType.Instance, new TokenFactory(), def.Lifetime);

                string  inputText   = myLexer.Buffer.GetText();
                var     tokenStream = new CommonTokenStream(new CLexer(new AntlrInputStream(inputText)));
                CParser cParser     = new CParser(tokenStream);
                cParser.AddErrorListener(new ParserErrorListener(builder));
                var visitor = new BuilderVisitor(builder);

                var fileMark = builder.Mark();

                CParser.CompilationUnitContext fileContext = cParser.compilationUnit();
                visitor.Visit(fileContext);

                builder.Done(fileMark, SpringFileNodeType.Instance, null);
                var file = (IFile)builder.BuildTree();
                return(file);
            }
        }