gpt4 book ai didi

antlr - 如何修复 ANTLR4 规则中的相互左递归

转载 作者:行者123 更新时间:2023-12-02 00:05:49 31 4
gpt4 key购买 nike

我正在尝试在 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]”。我只是不知道如何解决这个问题。欢迎提出任何建议。谢谢!

最佳答案

因为你的 fd 规则有一个 * 这意味着它可以为空(* = 0 次或更多次) - 有一个空的 fd 意味着你的 pb 规则(第二行)将是一个 pb : pb,这是不允许的,因为解析器将永远循环。您可以通过不允许 fd 规则为空(将 * 更改为 +)来解决此问题,但我不知道您的语法是否需要这样做。

关于antlr - 如何修复 ANTLR4 规则中的相互左递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451290/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com