【发布时间】:2016-12-05 01:47:13
【问题描述】:
我需要编写 2 个词法分析器规则(或 1 个)来区分有效的 XML 字符串和有效的通用字符串(不是注释或双引号)。这是我的规则。
XMLTEXT : ~[<&]+ ;
STRINGTEXT : ~["\\] ;
当我传递一个作为 XML 正文一部分的字符串时,如下所示 antlr4
它匹配上述两个规则,我想匹配一个规则。有什么办法可以更好地编写上述两条规则吗?
【问题讨论】:
我需要编写 2 个词法分析器规则(或 1 个)来区分有效的 XML 字符串和有效的通用字符串(不是注释或双引号)。这是我的规则。
XMLTEXT : ~[<&]+ ;
STRINGTEXT : ~["\\] ;
当我传递一个作为 XML 正文一部分的字符串时,如下所示 antlr4
它匹配上述两个规则,我想匹配一个规则。有什么办法可以更好地编写上述两条规则吗?
【问题讨论】:
不,这行不通。
如果没有现实生活中的例子,除了指出词汇模式之外很难给出更具体的答案:https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexical-modes
还可以查看 ANTLR4 存储库中的示例 XML 语法中如何使用词法模式:https://github.com/antlr/grammars-v4/blob/master/xml/XMLLexer.g4
【讨论】: