
编译
gobattle
这个作者很懒,什么都没留下…
展开
-
语法分析:自顶向下 vs 自底向上
这两种分析方法对应的就是LL和LR语法分析,也就是从产生式推导到终结字符和从终结字符规约到产生式的区别。 LL分析先拿到产生式左值。此时想要做的是确认这个产生式左值非终结符号是什么,即是由什么产生式右值构成的。对于不nullable的非终结符A,只有以FIRST(A)中的文法符号开头的文法符号串才有可能构成这个A。根据向前看的字符,与之于FIRST(A)匹配,匹配失败则报error。对于nullable的A,它可以被跳过,所以如果下一个文法符号在FOLLOW(A)中则可以用A->ε把A推原创 2010-12-13 11:30:00 · 4808 阅读 · 0 评论 -
unix 和 dos 中换行的区别
<br />unix以/n为回车<br />dos以/r/n为回车...<br /> <br />忽略了这个错误...我真tm2原创 2010-12-19 12:52:00 · 488 阅读 · 0 评论 -
JLex中一个莫名的错误...及解答
在写lex文件时,遇到一个错误,耗费我一个下午的时间来解决。就是一个简单的想要统计换行的小程序片段。但是没想到/n会和/012冲突。 就算我把/n的匹配优先级调成最高,但是只要/012存在在可能匹配的式子当中,哪怕下一个字符就是/n!!分析器还是会认为读到的是/012!!!这是神马情况,害的哥一下午就为了找到这个该死的/012!!!原创 2010-12-17 19:41:00 · 420 阅读 · 0 评论 -
Tiger+JLex问题
转自http://wjjsjtu.spaces.live.com/blog/cns!183486AB5BA6DB0C!106.entry使用JLex 生成Tiger语言词法分析 问题1:问题描述: 用sample.lex生成的词法分析器在分析任何代码的时候均有未匹配的字符(“unmatched input”)输出。解决方案: 由于Jlex的说明文档包括sample.lex文件在内是针对unix操作系统来进行讨论的,在unix中一个换行符只有一个“/n”, 而在dos里一个换行符包括两个字转载 2010-12-18 23:33:00 · 458 阅读 · 0 评论 -
cup中的小问题
<br />解决shift/reduce冲突,在命令行中加入 -expect NUMBER 来确定会发生的冲突次数<br /> <br />生成式逻辑关系要理清!原创 2010-12-19 15:58:00 · 255 阅读 · 0 评论 -
symbol池与符号表
通过String的intern()函数,可以做到不同Symbol中包含的字符串一定是不同的。再将Symbol应用于Table中的关键字,由此又可以做到对同样一个Symbol,可以再Hash表中的同一格按先后顺序链上不同的Binders。Binder内部维护了一个Symbol对象:top。用来指向在此Binder加入Hash表之前一个加入的Binder。因此top相当于虚拟的构造了一个加入先后顺序的序列,利用这一系列top可以逆向把后加入的Binder再弹出,这样就可以实现Undo效果。原创 2010-12-21 21:02:00 · 462 阅读 · 0 评论 -
null
<br />虎书略过的内容太多,前后连不起来<br /> <br />还有一周多,难度挺大啊原创 2011-01-05 14:16:00 · 290 阅读 · 0 评论