Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
给出来自The Definitive ANTLR 4 Reference的以下示例
STUFF: ~[\t\r\n]+ ; // match any chars except tab, newline
我正在尝试为以*. 例如:
*
line : ~ASTERIX keys ; ASTERIX : '*';
但是,我不想匹配所有不是的ASTERIX,我希望line规则在该行不以开头时执行ASTERIX,然后开始其余的匹配。
ASTERIX
line
您可以重新定义ASTERISK规则以仅匹配*出现在行首的匹配项。
ASTERISK
ASTERISK : '*' {_input.LA(-2) == '\n'}?;
那么你的line规则根本就不能参考ASTERISK。
line : keys;
只要keys不允许ASTERISK作为第一个符号,则line不能匹配第一个标记所在的行ASTERISK。
keys