Chinaunix
标题:
问一个语法分析的问题
[打印本页]
作者:
justlooks
时间:
2012-04-21 10:52
标题:
问一个语法分析的问题
比如以下的表达式,那么引用 expr是算 $2还是$3??
9716 where_clause:
9717 /* empty */ { Select->where= 0; }
9718 | WHERE
9719 {
9720 Select->parsing_place= IN_WHERE;
9721 }
9722 expr
复制代码
作者:
walleeee
时间:
2012-04-21 17:48
我觉得你给的看起来不是太完整,你看下面这个如何?
input : /* empty */
| input line
;
line : '\n'
| exp '\n' { printf ("%d\n", $1); }
;
exp : NUM { $ = $1; }
| exp '+' exp { $ = $1 + $3; }
| exp '-' exp { $ = $1 - $3; }
| exp '*' exp { $ = $1 * $3; }
| exp '/' exp
{
if ($3)
$ = $1 / $3;
else
{
$ = 1;
fprintf (stderr, "%d.%d-%d.%d: division by zero",
@3.first_line, @3.first_column,
@3.last_line, @3.last_column);
}
}
| '-' exp %prec NEG { $ = -$2; }
| exp '^' exp { $ = pow ($1, $3); }
| '(' exp ')' { $ = $2; }
复制代码
作者:
justlooks
时间:
2012-04-23 11:01
我的意思是当解析为"标识符 { 处理过程 } 标识符2" ,那么处理过程会不会占一个位置,比如"标识符 标识符2",取第2个标识符就是$2,而之前的情况 因为处理过程占了原先$2的位置,如果标识符2后面还有处理过程的话,那么这个处理过程是应该取第3个参数才会引用到标识符2这个东西?是这样的嘛?
作者:
walleeee
时间:
2012-04-23 11:10
回复
3#
justlooks
我不太记得,印象中是要占1个。再说,你2,3方便试一下再说么?
作者:
justlooks
时间:
2012-04-23 11:15
回复
4#
walleeee
问题我这方面完全不懂,所以才问的,要不我就自己测试了
作者:
walleeee
时间:
2012-04-23 11:47
回复
5#
justlooks
不是。你没懂我的意思。
我是说你怀疑2,3,你把它们都试一下就2个情况,看谁行
作者:
walleeee
时间:
2012-04-23 11:48
回复
5#
justlooks
还有,建议你也试试leamon,这个根本就不存在你说的问题
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2