
语法解析
hust206
这个作者很懒,什么都没留下…
展开
-
Lex&Yacc(0)
学习Lex&Yacc做语法分析也有两个月了,最近准备把自己辛苦攒写的代码移植到Javacc上。所以准备尽量每天都腾出点儿时间,把之前学的知识进行整理和巩固。同样也利于以后与别人分享。 最后选择Javacc做语法分析而放弃使用Yacc,是基于以下几点考虑的: 1、Yacc只支持LL(1)算法,而Javac支持LL(k)算法。 2、Yacc基于C编写,且它自动生成的.c文件可读性很差,当程序达到...2009-10-09 20:31:56 · 132 阅读 · 0 评论 -
Lex&Yacc(1) 环境准备与参考资料
环境准备: Lex属于GNU内部的工具,它通常都是gcc的附带工具. 如果你使用的Linux操作系统,那么肯定系统本身就有lex和yacc,不过yacc的名字变成了bison. 如果你使用的Windows操作系统,那么可以到cygwin或者GNUPro里面找得到. 网上也有windows版本lex和yacc,大家可以自己去找一找. 参考资料: IBM-《Yacc 与 Lex 快速入门》:...原创 2009-10-09 21:46:33 · 159 阅读 · 0 评论 -
Lex&Yacc(2) 第一个flex的例子
在《lex&yacc第二版》开篇就给出了一个最简单的lex程序 [code="flex"] //第一部分 %% //第二部分 .|\n ECHO; %% //第三部分 [/code] 程序分为三个部分,第一部分为定义部分,包括宏定义和变量定义、Lex参数定义等。在定义变量和函数的时候,需要用%{和}%括起来,括起来的部分内容将在使用lex命令将lex源程序输出为.c...2009-10-12 12:31:20 · 219 阅读 · 0 评论 -
Lex&Yacc(3) 第一个yacc的例子
写一个什么都不解析的例子: [code="yacc"]//第一部分:定义段 %% //第二部分:规则段 mystatment: ; %% //第三部分:用户子例程段[/code] Yacc的三部分与Lex的三部分类似。 在第一部分的定义段,包括%{和%}括起来的的C代码段、包括#include部分和变量定义;同时可能会有:%union,%start,%token,%type...2009-10-13 20:11:07 · 186 阅读 · 0 评论 -
Lex&Yacc(4) flex与Yacc结合的例子
最近这一周的临时任务实在是重,好几个晚上都很晚才回去。 自己的Javacc开发任务也有所耽搁,下个周也不轻松。所以只好抽晚上程序跑数的时间来更新一下。 Lex是词法解析程序,擅长用正则表达式去匹配词组;而Yacc擅长于对复杂语法的分析,两者结合起来能使代码高效且维护更简单。 下面我们用lex与Yacc写一个计算器的例子,这个例子很经典,到处都可以找到,我的例子来自于《lex与yacc 第二版...2009-10-22 20:42:13 · 389 阅读 · 0 评论