Compiler construction 如何检查此语法中的歧义:-

Compiler construction 如何检查此语法中的歧义:-,compiler-construction,context-free-grammar,ambiguity,Compiler Construction,Context Free Grammar,Ambiguity,E->EE+/E(E)/id 检查给定的语法是否不明确。另外,如果你能告诉我消除歧义的过程,那将是一个很大的帮助 我尝试为它创建解析树,但无法找出如何实际创建它以查找不明确的大小写Bison为该语法生成一个LALR(1)解析器,而没有任何解析器冲突。没有解析冲突的LALR(1)语法不可能是歧义的,因此您似乎不太可能找到歧义 作为参考,我使用的野牛输入是: %% E: E E '+' | E '(' E ')' | 'i' 如果您使用-v标志处理,bison将生成一个包含完整状态机的报告文件

E->EE+/E(E)/id

检查给定的语法是否不明确。另外,如果你能告诉我消除歧义的过程,那将是一个很大的帮助

我尝试为它创建解析树,但无法找出如何实际创建它以查找不明确的大小写

Bison为该语法生成一个LALR(1)解析器,而没有任何解析器冲突。没有解析冲突的LALR(1)语法不可能是歧义的,因此您似乎不太可能找到歧义

作为参考,我使用的野牛输入是:

%%
E: E E '+'
 | E '(' E ')'
 | 'i'
如果您使用
-v
标志处理,bison将生成一个包含完整状态机的报告文件。(有八个状态加上初始状态。)