0
我试图做一个解析器,可以处理如果其他语句。目前,我有下面的代码为我bison.y文件:野牛/ Flex如果语句
ifstate: IF_TOKEN LPARENT compare RPARENT statement ENDIF_TOKEN
| IF_TOKEN LPARENT compare RPARENT statement else
;
else: ELSE_TOKEN statement ENDIF_TOKEN
| ELSEIF_TOKEN LPARENT compare RPARENT statement ENDIF_TOKEN
| ELSEIF_TOKEN LPARENT compare RPARENT statement else
;
在这里,我已经比较返回一个字符串,它是真的还是假的。并且陈述是任何陈述(从添加到更多陈述的陈述)。但是,我不知道如何才能做到这一点,如果是真的。
你的主要问题是接近的,以无法回答的,因为缺乏上下文。比较将在运行时执行,除非条件不变并且您有可以检测到的代码。你如何生成任何代码?没有迹象表明,所以我们无法帮助您解决如何以不同的方式生成代码。 ISTR认为这样的陈述代码生成适度混乱 - 在声明中的操作完成之后确定将解释器发送到哪里的操作非常繁琐,因为您还不知道ENDIF将在哪里等。可以这样做,虽然。 –