C# 使用Antlr中的语法规则获取文本的匹配段集
我已经定义了一套语法规则。将此视为示例规则。C# 使用Antlr中的语法规则获取文本的匹配段集,c#,antlr,antlr3,C#,Antlr,Antlr3,我已经定义了一套语法规则。将此视为示例规则。 public bodylist : bodyset* ; public bodyset : ruleSet | media | page ; 如果我必须使用这些规则进行解析,我必须按照下面的方法进行 Stream inputStream = Console.OpenStandardInput(); ANTLRInputStream input = new ANTL
public bodylist
: bodyset*
;
public bodyset
: ruleSet
| media
| page
;
如果我必须使用这些规则进行解析,我必须按照下面的方法进行
Stream inputStream = Console.OpenStandardInput();
ANTLRInputStream input = new ANTLRInputStream(inputStream);
CLexer lexer = new CLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
CParser parser = new CParser(tokens);
parser.bodylist();
我对访问流中匹配段集的躯干集的方式感到困惑。似乎我必须做另一个解析,如下所示
parser.bodyset();
流中可以有多个bodyset语法匹配段集
假设在输入流中有多个匹配此规则的位置。我想得到的是关于这些bodyset
信息集的信息(在每一个信息中,语法规则的开始和结束是什么)
我无法找到访问流中
bodyset
语法规则的匹配集信息的方法。我对API感到困惑。ANTLR 3不会像ANTLR 4那样自动创建具有侦听器和访问者的解析树。您需要执行以下操作之一:
bodylist
方法将返回BodylistContext
对象,该对象提供了一个bodyset()
方法,该方法返回一组BodysetContext
对象(每个bodyset
解析对象对应一个)output=AST
特性和树语法来处理输入再次非常感谢@280728。我会选择升级解决方案。我会尝试一下,然后再来。:)