public virtual RuleAST ParseArtificialRule(Grammar g, string ruleText)
{
ANTLRLexer lexer = new ANTLRLexer(new ANTLRStringStream(ruleText));
GrammarASTAdaptor adaptor = new GrammarASTAdaptor(lexer.CharStream);
CommonTokenStream tokens = new CommonTokenStream(lexer);
lexer.tokens = tokens;
ToolANTLRParser p = new ToolANTLRParser(tokens, tool);
p.TreeAdaptor = adaptor;
IToken ruleStart = null;
try
{
Antlr.Runtime.AstParserRuleReturnScope<GrammarAST, IToken> r = p.rule();
RuleAST tree = (RuleAST)r.Tree;
ruleStart = r.Start;
GrammarTransformPipeline.SetGrammarPtr(g, tree);
GrammarTransformPipeline.AugmentTokensWithOriginalPosition(g, tree);
return tree;
}
catch (Exception e)
{
tool.errMgr.ToolError(ErrorType.INTERNAL_ERROR,
e,
ruleStart,
"error parsing rule created during left-recursion detection: " + ruleText);
}
return null;
}