Pickaxe.Parser.CodeParser.Parse C# (CSharp) Method

Parse() public method

public Parse ( ) : Program
return Program
        public Program Parse()
        {
            var lexer = new AntlrLexer(new ANTLRStringStream(_code));
            var tokens = new CommonTokenStream(lexer);

            var parser = new AntlrParser(tokens);
            parser.TreeAdaptor = new Adapter();
            var result = parser.program();

            lexer.Errors.ForEach(x => Errors.Add(x));
            parser.Errors.ForEach(x => Errors.Add(x));
            if (Errors.Any())
                return null;

            var bridge = new BridgeVisitor(result.Tree);
            return bridge.CreateAst();
        }

Usage Example

Esempio n. 1
0
        private CodeCompileUnit[] GetCompileUnits()
        {
            var compileUnits = new List<CodeCompileUnit>();
            foreach (var source in _sources)
            {
                var parser = new CodeParser(source);
                var ast = parser.Parse();
                if (parser.Errors.Any()) //antlr parse errors
                    Errors.AddRange(parser.Errors);

                if (!Errors.Any())
                {
                    var generator = new CodeDomGenerator(ast);
                    compileUnits.Add(generator.Generate());
                    if (generator.Errors.Any()) //Semantic erros
                        Errors.AddRange(generator.Errors);
                }
            }

            return compileUnits.ToArray();
        }