Tag: 野牛

如何解决野牛警告“…没有声明types”

在这个文件上运行野牛: %{ #include <iostream> int yylex(); void yyerror(const char*); %} %union { char name[100]; int val; } %token NUM ID %right '=' %left '+' '-' %left '*' %% exp : NUM {$$.val = $1.val;} | ID {$$.val = vars[$1.name];} | exp '+' exp {$$.val = $1.val + $3.val;} | ID '=' exp {$$.val = vars[$1.name] […]

Antlr的优势(与lex / yacc / bison相比)

过去我使用lex和yacc(更常见的是bison)来处理各种项目,通常是翻译(例如EDIF的一个子集stream入EDA应用程序)。 另外,我必须支持基于lex / yacc语法的代码。 所以我知道我的工具,虽然我不是专家。 我在过去的各种论坛上看到过关于Antlr的积极评论,我很好奇我可能会错过什么。 所以,如果你使用了两者,请告诉我什么Antlr更好或更先进。 我目前的限制是我在C ++商店工作,任何我们发布的产品都不会包含Java,所以得到的parsing器将不得不遵循这个规则。

改写语法去除移位减lessif-then-else中的冲突

如何删除给定语法的野牛移位 – 减less冲突? selection-stmt -> if ( expression ) statement | if ( expression ) statement else statement 提供修改过的语法的解决scheme将受到高度赞赏。