编译原理
文章平均质量分 89
zouliping123
这个作者很懒,什么都没留下…
展开
-
Java实现C语言语义分析(递归下降)
说起这次的语义分析,不得不说的是我的重大的改变。上一次的语法分析是利用了预测分析法来实现的,经过多方考证,发现用预测分析法的语法分析器基础来实现语义分析的困难重重,例如在语法指导翻译的时候那个栈的变化和各种属性的传递就已经让我头晕脑胀了。无奈之下,只好重写语法分析,用了递归下降来实现语法分析进而实现我的语义分析。使用递归下降的最大好处就是思路特别清晰,一旦开始写了,就特别明确接下来要做什么。这原创 2012-12-07 16:24:20 · 6692 阅读 · 2 评论 -
Python实现的C语言词法分析
编译原理课上的一个实验是做一个编译器前端的词法分析器,我选择了用Python来写C语言的词法分析。 词法分析器的功能是输入源程序,输出单词符号。当初定义Token(单词种别,属性值)序列的时候,是将单词种别用数字来表示,后来再做语法分析的时候,发现用数字时不太合理的,所以又对单词的种别码进行了一番修改。 我的程序的总体思路是先对源程序进行一遍扫描,将多余的空格和原创 2012-11-10 22:39:22 · 15642 阅读 · 1 评论 -
Java实现C的语法分析器(预测分析法)
在上一次词法分析的基础之上,我完成了我的C语言的语法分析器。这次选择的是用Java来实现,采用了自顶向下的分析方法,其思想是根据输入token串的最左推导,试图根据现在的输入字符来判断用哪个产生式来进行推导。 使用LL(1)分析法的问题就是对文法的要求较高,要求消除回溯了左递归,以致于后来在写文法的时候遇到各种麻烦,做了各种消除(本来想偷个懒,不通过程序直接手动解决这个问题的,原创 2012-11-12 16:28:52 · 10894 阅读 · 51 评论