免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1798 | 回复: 6
打印 上一主题 下一主题

问一个语法分析的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-21 10:52 |只看该作者 |倒序浏览
比如以下的表达式,那么引用 expr是算 $2还是$3??

  1. 9716 where_clause:
  2. 9717           /* empty */  { Select->where= 0; }
  3. 9718         | WHERE
  4. 9719           {
  5. 9720             Select->parsing_place= IN_WHERE;
  6. 9721           }
  7. 9722           expr
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-04-21 17:48 |只看该作者
我觉得你给的看起来不是太完整,你看下面这个如何?
  1.      input   : /* empty */
  2.              | input line
  3.      ;
  4.      
  5.      line    : '\n'
  6.              | exp '\n' { printf ("%d\n", $1); }
  7.      ;
  8.      
  9.      exp     : NUM           { $ = $1; }
  10.              | exp '+' exp   { $ = $1 + $3; }
  11.              | exp '-' exp   { $ = $1 - $3; }
  12.              | exp '*' exp   { $ = $1 * $3; }
  13.              | exp '/' exp
  14.                  {
  15.                    if ($3)
  16.                      $ = $1 / $3;
  17.                    else
  18.                      {
  19.                        $ = 1;
  20.                        fprintf (stderr, "%d.%d-%d.%d: division by zero",
  21.                                 @3.first_line, @3.first_column,
  22.                                 @3.last_line, @3.last_column);
  23.                      }
  24.                  }
  25.              | '-' exp %prec NEG     { $ = -$2; }
  26.              | exp '^' exp           { $ = pow ($1, $3); }
  27.              | '(' exp ')'           { $ = $2; }
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-04-23 11:01 |只看该作者
我的意思是当解析为"标识符 { 处理过程 } 标识符2" ,那么处理过程会不会占一个位置,比如"标识符 标识符2",取第2个标识符就是$2,而之前的情况 因为处理过程占了原先$2的位置,如果标识符2后面还有处理过程的话,那么这个处理过程是应该取第3个参数才会引用到标识符2这个东西?是这样的嘛?

论坛徽章:
0
4 [报告]
发表于 2012-04-23 11:10 |只看该作者
回复 3# justlooks


我不太记得,印象中是要占1个。再说,你2,3方便试一下再说么?

论坛徽章:
0
5 [报告]
发表于 2012-04-23 11:15 |只看该作者
回复 4# walleeee


    问题我这方面完全不懂,所以才问的,要不我就自己测试了

论坛徽章:
0
6 [报告]
发表于 2012-04-23 11:47 |只看该作者
回复 5# justlooks


    不是。你没懂我的意思。

我是说你怀疑2,3,你把它们都试一下就2个情况,看谁行

论坛徽章:
0
7 [报告]
发表于 2012-04-23 11:48 |只看该作者
回复 5# justlooks


    还有,建议你也试试leamon,这个根本就不存在你说的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP