语法分析器-----痛苦出炉

发表于

请点击这里下载“C\C++语法分析器SLR(1)分析方法”源程序

程序终于做完了,昨天晚上开始构思程序,今天早上开始写,中午写完,程序所占的时间还不到一天,但是程序前的准备过程却花费了我至少两个半星期的时间!构造文法,构造有效项目集,构造DFA,构造SLR(1)分析表,用了35张16K的纸!程序的算法不是很难,但是数据巨多,还得手工设置,非常麻烦.前些日子SLR(1)分析方法有很多地方不明白,导致出现很多错误.直到昨天中午明白了之后,昨天一个下午的时间又把SLR(1)分析表重新做了一遍.今天程序出来运行时又发现表中有不少错误,于是一边运行一边修改表,直至最后完工.现在很轻松,好高兴啊.
在大学期间至今有两个盛产程序的时期:一个是大二下半学期学数据结构的时候,一个就是现在大三下半学期开各门专业课的时候.
这个程序没有什么技巧性,且写程序所花的时间也是相当少的,但所作的准备工作却是最大的,也很累,因此纪念一下,让自己稍作休息^_^
程序的设计报告太麻烦,还没有写出来,数据和图太多,打出来恐怕要累死人的,我想等我把纸上那些分析过程扫描下来,写成报告后再传上来……

机器猫(手机)发表评论于2008-1-18 11:17:20

看来你的编译原理学的很好ia
[wap]

lemon(游客)发表评论于2007-10-27 11:17:29

貌似编译通不过 MinGW...
以下为Ivan的回复:
这个是用C写的,但个别的地方用到了C++的一点东西,所以只在常用的Visual C++ 6.0上是没问题的,其他编译器,就很难说了,感谢你的关注。

zhen(游客)发表评论于2007-6-8 10:24:40

在下恁佩服楼主```
我正在实验课堂上晕得六神无主,你的程序救了俺啊``让俺的精神为之一振,嘿嘿,谢!

以下为博主用移动设备自Wap途径回复:
欢迎光临哈

很佩服你(游客)发表评论于2007-5-31 3:09:49

本来在搜索相关的程序累得不行,不过这时侯看到你绝世杰作,我精神又来了,你很强,继续努力,相信将来你会有很大成就的
以下为blog主人的回复:
非常感谢

sad(游客)发表评论于2007-5-15 19:00:33

巨佩服!想了半天俺也没想出一个头绪!只好来借鉴了啊

教员恁变态,只给两天时间。

难!难!!难!!!
啊!!!!!!!!!!!!
以下为blog主人的回复:
多谢关注

blueosky(游客)发表评论于2007-4-3 9:49:42

我的作业是:
编写一个语法分析程序,对输入到缓冲区的符号进行分析,建立相应的语法树,并输出相应的语法树。
请大哥帮下小弟啊
谢谢了
tszy-115@163.com
以下为blog主人的回复:
这个不难,语法树在程序过程中已经建立了,只需要你看看,在什么地方设置输出就OK了

blueosky(游客)发表评论于2007-4-3 9:42:38

大哥
给我也发一份啊
最近做课程设计好痛苦啊
借鉴一下啊
我的邮件是tszy-115@163.com

ww(游客)发表评论于2006-3-13 11:01:19

有词法分析器吗
构造DFA?
谢谢各位大哥大姐了

想想(游客)发表评论于2006-3-3 16:37:25

好强哦,我也在做编译器,能不能给我多讲讲!怎样从二元式转到四元式

强(游客)发表评论于2006-2-22 12:44:34

以下引用houjbf(游客)在2005-11-17 9:03:31的评论:

你好强哦,兄弟我佩服!
来贵宝地借鉴借鉴!佩服!

huyaodon(游客)发表评论于2006-1-13 13:55:40

你好强啊 救救我吧
设计题七:条件语句的语法分析及语义分析程序设计。
1.目的
通过设计、编制、调试一个语法及语义分析程序,加深对语法及语义分析原理的理解。
2.设计内容及要求
IF 〈布尔表达式〉 THEN  〈赋值语句〉
用算符优先分析法
我的邮箱huyaodon@tom.com
再次感谢
以下为blog主人的回复:
语义分析其实就是在语法分析的同时做的,相应的程序请参考blog左上角的“我的程序下载”,不过是slr的分析方法,算符优先会更简单些

tife(游客)发表评论于2006-1-12 0:27:53

太牛逼了!!!!!
楼主帮帮忙,我有个题目这两天就要交,可我不会啊,不过对你来说应该很简单,拜托了,谢谢。
题目:条件语句的语法分析及语义分析程序设计
1.目的
通过设计、编制、调试一个语法及语义分析程序,加深对语法及语义分析原理的理解。
2.设计内容及要求
IF 〈布尔表达式〉 THEN  〈赋值语句〉  ELSE 〈赋值语句〉
(1)用LL(1)分析法完成以上任务,中间代码选用四元式。
(2)写出分析方法要求的文法,给出分析方法的思想,完成分析程序设计。
(3)编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。
感激不尽!!!!!
我邮箱:tife1983@sohu.com
再次感谢!
以下为blog主人的回复:
相应程序请参考blog左上角的程序下载链接

22(游客)发表评论于2006-1-2 16:57:51

以下引用houjbf(游客)在2005-11-17 9:03:31的评论:

你好强哦,兄弟我佩服!

游客(游客)发表评论于2005-12-28 21:57:27

一直关注中,哈哈。我觉得词法的程序满好的,语法的程序有点难懂,不过可能是我对SLR的理解太浅了吧。词法分析的报告怎么不做个状态转换图呢? 以下为blog主人的回复:
有很完整的程序设计报告啊,这里的只是编译程序设计的一部分,完整程序及设计报告请参考blog左上角的程序下载链接

rgrg(游客)发表评论于2005-12-25 16:33:36

以下引用houjbf(游客)在2005-11-17 9:03:31的评论:

你好强哦,兄弟我佩服!
有词法分析器吗?
以下为blog主人的回复:
有的,请到blog左上角的程序下载链接里去下载

maimai(游客)发表评论于2005-12-20 21:00:35

你可真是个厉害人物!佩服佩服!
有一事相求,能给个语法分析的程序吗?急用!谢啦!
邮箱:lovelycat584520@yahoo.com.cn
以下为blog主人的回复:
有相应的程序,请到blog左上角的程序下载链接里去下载

冰雪儿(游客)发表评论于2005-11-30 11:07:14

大体上还是挺好的,如果能够用XML输出语法树就好了
不过你已经很厉害了

lily(游客)发表评论于2005-11-18 10:43:15

好强哦

houjbf(游客)发表评论于2005-11-17 9:03:31

你好强哦,兄弟我佩服!

会抽烟的鱼(游客)发表评论于2005-11-12 11:01:28

真是及时啊!正要用呢

babymat(游客)发表评论于2005-11-8 8:49:37

最近我也急需要这个,我去下载了,有问题打不开,麻烦楼主给我发邮件吧baby_mat@163.com我要的是语法分析程序啊,要快!!!
不甚感激!!!!
以下为blog主人的回复:
已经发送~~

hiter(游客)发表评论于2005-10-30 10:06:39

不是吧   手工 做的分析表......  有意思么

share(游客)发表评论于2005-10-29 23:53:16

以下引用hello(游客)在2005-10-10 15:28:06的评论:

大哥,快把设计报告传上来吧 以下为blog主人的回复:
我早就传上去了啊,就在这个blog的其他帖子上,包括:词法、语法、语义,还有完整的设计报告
谢谢关注^_^

感谢搂主的血汗,让我有机会多学点。还有,能否将简单的设计思想报告给我呢?xifengfeng!@126.com
谢谢了!

Dragon(游客)发表评论于2005-10-28 21:13:42

等几天吧,到时候把程序提交上去,现在只有个词法分析器,我想把它们做完善了!!

工大学友(游客)发表评论于2005-10-26 15:06:01

]^_^too simple!!功能太简单而且,action表,和goto表居然是手工做出来的,应该用程序生产的,不然的话,一个pascal就有数千个状态,还不累死你啊!! 以下为blog主人的回复:
呵呵,牛人啊,至今偶还不知道pascal、C等的产生式到底有多少个,构造多了担心出错,所以就做最精简的:-),只要把思想表达清楚了就可以了,毕竟相信绝大多数cs人都不愿意搞编译.既然有更好的,何不一起帖出来供大家欣赏呢?我的信箱ivanpank@gmail.com,愿意的话把你的程序发过来,我在这里公布。很高兴有这么多人来关注,继续等待下一位……

hello(游客)发表评论于2005-10-10 15:28:06

大哥,快把设计报告传上来吧 以下为blog主人的回复:
我早就传上去了啊,就在这个blog的其他帖子上,包括:词法、语法、语义,还有完整的设计报告
谢谢关注^_^

g84j(游客)发表评论于2005-8-23 8:38:29

大哥,有C版的LL(1)语法分析程序吗?能否发到我邮箱里,谢谢,
g84j@yahoo.com.cn
以下为blog主人的回复:
没有啊,完成作业的时间不多,我就选了SLR(1)做了,不好意思

Yet(游客)发表评论于2005-6-30 22:28:00

强啊!
有没有实现下面两个程序要求的程序。我找了好久就找到了这里了。帮帮忙!看你上面实现的程序应该下面的要求是很简单的。可惜俺就是不懂。
------------------------------
程序要求:1.词法分析:输入任意字符串表达式,输出token列表、变量列表、数字列表、分
界符列表、错误列表(如果有的话)。
2.语法分析:三个算法(递归下降、LL(1)、算符优先)中任选一个实现,输入类
似“i+i*i”的字符串,输出语法分析树。
-----
佩服你啊!这课太难理解了!
以下为blog主人的回复:
我看到你的邮件了,已经回复,请注意查收,感谢你的关注