想象一下,我有以下规则。我想让TYPE_ID
成为可选项,但如果它丢失,则将其替换为AST中的某个默认值。
assignment : TYPE_ID? ID '->' expression
TYPE_ID : ('A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9')* ;
例如,我有以下代码要解析,根据上述规则,假设expression
可以根据需要运行。
monday -> 1.
Number tuesday -> 2.
我希望AST在monday
的{{1}}前面的Number
前面有一个的东西。{/ p}显示在下一个树中。
我搜索过并搜索过,无法弄清楚如何做到这一点?
答案 0 :(得分:3)
您可以执行以下操作:
tokens {
EMPTY;
}
assignment : TYPE_ID ID '->' expression -> ^( TYPE_ID ID '->' expression)
| ID '->' expression -> ^( EMPTY ID '->' expression)
;