Parsing Bison语法文件中的一个或多个实例
我需要解析的程序的格式应为:Parsing Bison语法文件中的一个或多个实例,parsing,compiler-construction,bison,Parsing,Compiler Construction,Bison,我需要解析的程序的格式应为: 程序:[声明]+ ; 这意味着:程序由一个或多个声明组成。 当然,轮到它的声明也是以类似的方式定义的,等等 目前,我从Bison解析器得到了一个关于+的错误。 如何正确定义野牛的一个或多个条件?显然 Bison不支持+或*符号来表示这些东西 我是如何解决的: 程序:声明 ; 声明:声明声明 |声明 ; 一个或多个: declarations : declaration | declarations declaration ; 零或更多:
程序:[声明]+
;
这意味着:程序由一个或多个声明组成。
当然,轮到它的声明也是以类似的方式定义的,等等
目前,我从Bison解析器得到了一个关于+的错误。
如何正确定义野牛的一个或多个条件?显然
Bison不支持+或*符号来表示这些东西
我是如何解决的:
程序:声明
;
声明:声明声明
|声明
;
一个或多个:
declarations
: declaration
| declarations declaration
;
零或更多:
declarations
: /* empty */
| declarations declaration
;
这不是一个或多个,而是零个或多个。对于一个或多个要用声明替换的
/*empty*/
。此解决方案是正确的递归解决方案,这不是使用LALR(1)解析器的正确方法。它应该是左递归的。