- 论坛徽章:
- 0
|
原帖由 Wind-Son 于 2008-1-19 01:03 发表 ![]()
语法分析范畴
可借助yacc和Bsion一类的语法工具
我个人感觉, 这个问题有一定难度, 用语法分析可以定义操作符的优先级, 但似乎做不到将多余括号去掉.
不过, 当然, 我们也可以用一种笨方法, 就是将所有存在多余括号的模式都列出来,然后将其去掉, 例如以下模式:
expr '+' '(' expr ')': output( expr '+' expr );
| expr '-' '(' expr ')': output( expr '-' expr );
| expr '*' '(' expr '*' expr ')': output( expr '*' expr '*' expr);
| expr '*' '(' expr '/' expr ')': output( expr '*' expr '/' expr);
....
这是一种人手提前将各种可能出现的多余括号模式穷举了的笨方法, 而不是在建立语法事的过程中,模拟语法分析的比较来去掉括号的方法, 可用,但不智能.
[ 本帖最后由 zszyj 于 2008-2-14 23:44 编辑 ] |
|