首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

yacc做shell的命令分析疑问解决办法

2012-05-14 
yacc做shell的命令分析疑问一下是个命令生成树的顶端,第一个选择应该可以省略掉管道符|的,为何移除会判

yacc做shell的命令分析疑问
一下是个命令生成树的顶端,第一个选择应该可以省略掉管道符"|"的,为何移除会判错呢?
%%
CommandLine:
|CommandLine '\n'{newline()}
|CommandLine Command '\n' {Command(),newline()}

....

[解决办法]
CommandLine: /* empty */
|CommandLine '\n' {newline()}
|CommandLine Command '\n' {Command(),newline()}
;

推出空串这么写就行,注释那地方就表示推出空串了。
yacc里epsilon(空串)空着就行了。如果但是第一个分支前去掉‘|’,文法就不能推出空串了。
我看《flex与bison》那本书学会的,推荐你看看。

热点排行