Parsing 正则表达式标记antlrV3
我可以在初始标记部分固定且部分通用的情况下编写规则吗Parsing 正则表达式标记antlrV3,parsing,antlr,expression,token,lexer,Parsing,Antlr,Expression,Token,Lexer,我可以在初始标记部分固定且部分通用的情况下编写规则吗 rule: ID '=' NUMBER ; ID: (A.. Z | a.. Z) + NUMBER: (0 .. 9) + 但仅当令牌ID的形式为var*(var是固定的) 谢谢你是说这个吗 // Use this instead of ID in all parser rules that take either token identifier : VAR_ID | ID ; VAR_ID
rule: ID '=' NUMBER
;
ID: (A.. Z | a.. Z) +
NUMBER: (0 .. 9) +
但仅当令牌ID的形式为var*(var是固定的)
谢谢你是说这个吗
// Use this instead of ID in all parser rules that take either token
identifier
: VAR_ID | ID
;
VAR_ID
: 'var' ('A'..'Z' | 'a'..'z')*
;
ID
: ('A'..'Z' | 'a'..'z')+
;
无论哪种方式:如果可能,不要对错误消息使用严格的词法语法。它们速度较慢,用户完全无法识别。您应该以轻松的形式解析
ID
,然后稍后检查它的格式是否正确。什么是“但仅当令牌ID的格式为var*(在固定var的正则表达式中)时”的意思?我需要这样的代码解析器:varA=3 vare=5 varDF=3。。。如果var是固定的,否则我会被通知一个例外,我明白了。那么280Z28已经回答了你的问题,谢谢。但是令牌ID存在于其他规则中,我需要它保持通用性。@Boo:如果你遵循我的强烈建议,它将保持通用性。如果你说你在解析器中这样做,这正是我需要的。请告诉我你能举个例子吗?我不是ANTLR的专家。。。非常感谢你。