用yacc做个编译器(LR分析方法的)的语法分析程序,具体步骤应是怎样的?
用yacc做个编译器(LR分析方法的)语法分析程序,具体步骤应是怎样的?
1,写出产生式
2,用程序生成"分析表(action+goto表)",
3,根据分析表写出yacc的规则文件,供yacc处理
对么?
还是其它步骤?
谢谢
[ 本帖最后由 liuzq71 于 2009-2-8 11:29 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
一般用yacc与lex混编,yacc进行语法分析,lex进行词法分析.
《lex&yacc》
http://linux.chinaunix.net/bbs/viewthread.php?tid=896629
当然,除了yacc,还有一些别的词法分析工具,不过我不太了解。
哪里能找到用yacc生成的简单的"语言编译器"的例子?想看看它的规则是如何编写的?(最好是LR(1)分析的方法的)
书上,网上讲解yacc时大多是用的"四则运算计算器"的例子,不免简单了一点,不得要领,
http://www.quut.com/c/ANSI-C-grammar-l-1998.html
http://www.quut.com/c/ANSI-C-grammar-y-1998.html
太好了,谢谢prolj (爱好者)
YACC分析的方法可由不得你,YACC用的应该是LALR(1),与LR(1)差不多。
对,正如cjaizss所说,Yacc是LALR(1)的,要找LR(1)的还真不好找。SLR的比LALR弱。
可是,
这几个打包文件中的规则文件用yacc处理时,都提示:
yacc: 1 shift/reduce conflict
(yacc: 1 移进/规约 冲突)
http://www.quut.com/c/ANSI-C-grammar-l-1998.html
http://www.quut.com/c/ANSI-C-grammar-y-1998.html
这两个比较权威
好像不同的lex和yacc之间有区别
ANSI C99标准手册上有 C99 的 BNF ,不知道你那个PLC的...
自己找《Lex&Yacc》看看吧,那书上有SQL的例子。