编译器如何实现if then else 判断(yacc之类自动构造,非手工) 30

ifstmt::=IFLPARENboolexpRPARENTHENstmt:s1ELSEstmt;这是一句很简单的if语句的语法分析代码,我的问题是,判断出if语句了,... ifstmt ::= IF LPAREN boolexp RPAREN THEN stmt:s1 ELSE stmt ;
这是一句很简单的if语句的语法分析代码,
我的问题是,判断出if语句了,怎么实现“if”的功能呢
应该是 boolexp 为真 就执行第一个stmt,为假,就执行第二个stmt,
但是如果就这么一句话的话,其实是执行完第一个stmt再执行第二个stmt的,与boolexp的值无关,,
我应该怎么改呢,这里用的是java_cup,不过如果你给出yacc的解法也一样,,
,给个思路也行(要有效)
这个问题在 其他语言专区也开过贴,悬赏100分,如果你答出来了,那个100分也是你的,反之亦然
展开
 我来答
匿名用户
2012-11-21
展开全部
if then else没听过根据boolexp判断执行哪个stmt的问题。
语法分析关于if语句都是介绍else的悬挂问题。可以通过在语句结束加end解决,或者语法分析通过多读一个token判断else关键字。
yacc通过优先级的方法解决悬挂else。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式