コード例 #1
0
 public RuleAST parseArtificialRule(final Grammar g, String ruleText) {
   ANTLRLexer lexer = new ANTLRLexer(new ANTLRStringStream(ruleText));
   GrammarASTAdaptor adaptor = new GrammarASTAdaptor(lexer.getCharStream());
   CommonTokenStream tokens = new CommonTokenStream(lexer);
   lexer.tokens = tokens;
   ToolANTLRParser p = new ToolANTLRParser(tokens, tool);
   p.setTreeAdaptor(adaptor);
   try {
     ParserRuleReturnScope r = p.rule();
     RuleAST tree = (RuleAST) r.getTree();
     GrammarTransformPipeline.setGrammarPtr(g, tree);
     GrammarTransformPipeline.augmentTokensWithOriginalPosition(g, tree);
     return tree;
   } catch (Exception e) {
     tool.errMgr.toolError(
         ErrorType.INTERNAL_ERROR,
         "error parsing rule created during left-recursion detection: " + ruleText,
         e);
   }
   return null;
 }