作为一个简单的例子,假设我有以下内容。
parse_rule0 : parse_rule1 ',' parse_rule2 ';' ;
pare_rule1 : ... ;
parse_rule2: ... ;
PUNCTUATION : ',' | '.'| ';' | ':' ;当Antlr4 (特别是antlr4 vscode )生成令牌时,它会忽略我的标点符号规则(只是一个例子),并创建一个隐式令牌,例如T_1。我似乎无法在网上找到任何资源,用于从更一般的词汇规则中寻找特定的标记。为解析过程中想要查找的每一个可能的文字创建一个词法规则似乎是毫无意义的。
我到处寻找解决这个问题的办法。如果我想解析在词法规则中定义的特定字符,如何防止Antlr生成隐式令牌,并实际读取我的词法规则?
发布于 2021-10-01 11:13:45
令牌的显式使用
parse_rule0 : parse_rule1 PUNCTUATION parse_rule2 PUNCTUATION ;
pare_rule1 : ... ;
parse_rule2: ... ;
PUNCTUATION : ',' | '.'| ';' | ':' ;每个文字的词法规则
parse_rule0 : parse_rule1 ',' parse_rule2 ';' ;
pare_rule1 : ... ;
parse_rule2: ... ;
COMMA: ',';
DOT: '.';
SEMI: ';';
COLON: ':';不幸的是,ANTLR无法将文字与复杂的lexer规则相匹配,而这些规则甚至只包含其他选项。
https://stackoverflow.com/questions/69403112
复制相似问题