我试图在ANTLRWorks2中解析一种语言:
grammar testLR;
pb: 'kind' '=' ID ';' pb
| fd pb
|
;
fd: ( 'instance' '=' ID ';' )*
;
ID: ('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'$')*
;然后ANTLRWork告诉我:“下面的规则集是相互左递归的pb”。我只是想不出怎么解决这个问题。欢迎任何建议。谢谢!
发布于 2013-08-28 19:13:21
因为fd规则有一个*,这意味着它可以是空的(* =0或更多次)--拥有空fd意味着pb规则(第二行)将是pb : pb,这是不允许的,因为解析器将永远循环。您可以通过不允许fd规则为空(change * to +)来解决这个问题,但我不知道语法中是否希望这样做。
https://stackoverflow.com/questions/18451290
复制相似问题