简体   繁体   English

Antlr4:防止规则和令牌冲突

[英]Antlr4: Prevent rule and token conflicts

Given following grammar: 给出以下语法:

grammar minimal;

rule: '(' rule_name body ')';
rule_name : NAME;
body : '(' AT NAME ')';

AT : 'at';
NAME: LETTER ANY_CHAR*;
fragment LETTER: 'a' .. 'z' | 'A' .. 'Z';
fragment ANY_CHAR: LETTER | '0' .. '9' | '-' | '_';
WHITESPACE: ( ' ' | '\t' | '\r' | '\n' )+ -> skip;

How can I match (at (at bar)) with at as a valid function name without getting conflicts with the AT token from body without rearranging the grammar? 如何在不重新排列语法的情况下与at匹配(在(在(栏)处))作为有效的函数名称,而又不会与正文中的AT令牌冲突?

要消除冲突并保留预期的令牌类型:

rule_name : ( NAME | AT ) -> type(NAME) ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM