救急!有做过解释程序的朋友请看看,进行语义分析时,如何设计文法的非终结符的属性! http://www.codeguru.com/cpp_mfc/pascal.shtmlMini Pascal Compiler 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在吕映芝的《编译原理》上有一段是:属性文法的翻译简单赋值的是:如s->id = E {p = lookup(id.name); if p=nil then emit(p = E.place) else error} 在这里的lookup(id.name)是在你的符号表里面查id的name是否存在。emit(expression)是个用来在文件里面生成中间代码的函数。expression 指表达式,如p=E.place. 而像E->E1+E2{E.place=newtemp;emit(E.place=E1.place+E2.place)}也是类似的。所有的二元表达式的运算都是类似的。 nowadays, people seldom do parser themselves. JavaCC. JLex. are easy to use.But if your project is just focused on a parser, you probably cannot use a parser generator.poor guy. 哦,不是这样的,我把贴子贴到这里不是我要做java的解释器,是想多让一些人看到而已。这只是project的一极小部分而已,但是是我现在的主要任务,当作练习编程。understand! 问大家一个关于构造方法的问题,谢谢 String类不能克隆吗,怎么办 sql server2000企业管理器关系图新建失败 正则问题! 由下面的程序如何能够做出逆向算法的程序? 怎样用swing设计不变动的组件? 一个很简单的关于异常问题,请指点!! 紧急求救!关于在unix(ibm aix)系统中java服务运行问题!!!! 有些异常不可能抛出,但还是要用throws声明?怎么办? JAVA打印服务中怎样让只打了一部分的打印纸走完? 请问:页面中嵌入的applet,是不是都会下载到客户端阿? java的applet脱离开发环境的运行问题。
简单赋值的是:
如
s->id = E {p = lookup(id.name);
if p=nil then emit(p = E.place) else error}
在这里的
lookup(id.name)是在你的符号表里面查id的name是否存在。
emit(expression)是个用来在文件里面生成中间代码的函数。
expression 指表达式,如p=E.place.
E->E1+E2
{
E.place=newtemp;
emit(E.place=E1.place+E2.place)
}
也是类似的。
所有的二元表达式的运算都是类似的。
nowadays, people seldom do parser themselves. JavaCC. JLex. are easy to use.
But if your project is just focused on a parser, you probably cannot use a parser generator.poor guy.