CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

救急!有做过解释程序的朋友请看看,进行语义分析时,如何设计文法的非终结符的属性!

楼主hyllp(nice)2002-05-21 18:53:17 在 Java / J2SE / 基础类 提问

我现在设计产生式的语义子程序,实在有点力不从心,我打算用属性文法,可是不知道该如何下手设计非终结符的属性,可否指点一二:  
  s->   a   s1  
  s1->   or   a   s1   |   空  
  a->   b   a1  
  a1->   and   b   a1   |   空  
  b->   c   b1  
  b1->   <c   b1|   <=c   b1   |   >c   b1   |   >=c   b1   |   空  
  c->   d   c1  
  c1->   +d   c1   |   -d   c1   |   空  
  d->   e   d1  
  d1->   *e   d1   |   /e   d1   |   空  
  e->-f   |   f  
  f->(s)   |   id  
   
  告诉我如何设计非终结符的属性,万分感谢!  
  不要让我看书,我已经看的头都大了!毕业设计的时间已经不多了!恩人们快来啊!  
  问题点数:100、回复次数:7Top

1 楼hyllp(nice)回复于 2002-05-21 18:54:29 得分 0

上面是我的一部分产生式,给一些提示也行!Top

2 楼masterz(www.fruitfruit.com)回复于 2002-05-21 21:34:28 得分 30

http://www.codeguru.com/cpp_mfc/pascal.shtml  
  Mini   Pascal   CompilerTop

3 楼zorou_fatal(The world and system is even)回复于 2002-05-25 22:16:32 得分 69

在吕映芝的《编译原理》上有一段是:  
   
  属性文法的翻译  
  简单赋值的是:  
  如  
  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.Top

4 楼zorou_fatal(The world and system is even)回复于 2002-05-25 22:18:01 得分 0

而像  
  E->E1+E2  
  {  
  E.place=newtemp;  
  emit(E.place=E1.place+E2.place)  
  }  
  也是类似的。  
  所有的二元表达式的运算都是类似的。Top

5 楼zorou_fatal(The world and system is even)回复于 2002-05-25 22:18:51 得分 0

对于或的情况,你可以分开来写,但是属性的设置或者用哪类的数据结构可以由你自己来定义。Top

6 楼ajoo(聪明的一猪)回复于 2002-05-26 01:16:29 得分 1

 
  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.Top

7 楼hyllp(nice)回复于 2002-05-27 08:47:15 得分 0

哦,不是这样的,我把贴子贴到这里不是我要做java的解释器,是想多让一些人看到而已。这只是project的一极小部分而已,但是是我现在的主要任务,当作练习编程。understand!Top

相关问题

  • 救急!有做过解释程序的朋友请看看,进行语义分析时,如何设计文法的非终结符的属性!
  • 救急!有做过解释程序的朋友请看看,进行语义分析时,如何设计文法的非终结符的属性!
  • 请问编译原理中的终结符和非终结符是什么意思
  • 救急!救急!
  • 救急,救急
  • 救急!救急!
  • 急救!急救!急救!急救!急救!急救!急救!急救!
  • 救急!!!!!!!
  • 救急!!!!!!
  • 救急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

关键词

  • 属性
  • 文法
  • 非终结符
  • place
  • emit
  • parser
  • 设计

得分解答快速导航

  • 帖主:hyllp
  • masterz
  • zorou_fatal
  • ajoo

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo