15、Bison程序中的常见问题与特性解析

Bison程序中的常见问题与特性解析

1. Bison程序中的常见错误

1.1 无限递归

在Bison语法中,一个常见的错误是创建了没有终止条件的递归规则。例如:

%%
xlist:    xlist 'X' ;

Bison会以“起始符号xlist不能推导出任何句子”这样有些神秘的信息来诊断这种语法错误。

1.2 交换优先级

有时人们会尝试使用 %prec 来交换两个标记的优先级,如下所示:

%token  NUMBER
%left PLUS
%left MUL
%%
expr  :    expr PLUS expr %prec MUL
        |    expr MUL expr %prec PLUS
        |    NUMBER
        ;

这个例子看似让 PLUS 的优先级高于 MUL ,但实际上它们的优先级变得相同了。优先级机制通过比较要移入的标记的优先级和规则的优先级来解决移进 - 归约冲突。在这个例子中,当解析器看到“expr PLUS expr”且下一个标记是 MUL 时,会出现典型的冲突。如果没有 %prec ,规则的优先级是 PLUS ,低于 MUL

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值