コード例 #1
0
 private SourceEval createWalker(string file)
 {
     ANTLRFileStream stream = new ANTLRFileStream(file);
     SourceExprLexer lex = new SourceExprLexer(stream);
     CommonTokenStream tokens = new CommonTokenStream(lex);
     SourceExprParser parser = new SourceExprParser(tokens);
     SourceExprParser.prog_return r = parser.prog(_script);
     // WALK RESULTING TREE
     CommonTree t = (CommonTree)r.Tree; // get tree from parser
     // Create a tree node stream from resulting tree
     CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
     SourceEval walker = new SourceEval(nodes); // create a tree parser
     return walker;
 }
コード例 #2
0
ファイル: Emitter.cs プロジェクト: keithharvey/Script-Parser
        static string createRewriter(string file, Script script)
        {
            ANTLRFileStream stream = new ANTLRFileStream(file);
            SourceExprLexer lex = new SourceExprLexer(stream);
            // create a buffer of tokens pulled from the lexer
            // Must use TokenRewriteStream not CommonTokenStream!
            TokenRewriteStream tokens = new TokenRewriteStream(lex);
            SourceExprParser parser = new SourceExprParser(tokens);
            SourceExprParser.prog_return r = parser.prog(script);

            // WALK TREE AND REWRITE TOKEN BUFFER
            CommonTree t = (CommonTree)r.Tree; // get tree from parser
            // create a stream of tree nodes from AST built by parser
            CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
            // tell it where it can find the token objects
            nodes.TokenStream = tokens;
            //SourceRewrite rewriter = new SourceRewrite(nodes);
            //rewriter.prog(script);
            return tokens.ToString(); // return tweaked token buffer
        }