首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >if then在ocamlyacc中

if then在ocamlyacc中
EN

Stack Overflow用户
提问于 2013-07-08 01:46:04
回答 2查看 504关注 0票数 1

谁能简单介绍一下我如何在Ocamlyacc中实现if then else。我定义了词法分析器(Ocamllex)中的标记,即IF、THEN、ELSE。对于if语句,我为整数定义了标记: GREATERTHAN、LESSERTHAN、EQUALTO。我已经搜索了很多教程,但都没有用!

更新:

我想解释结果并返回if-else语句指定的表达式的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-08 06:53:28

您必须定义规则:

代码语言:javascript
复制
ifthenelse :    
 |   IF condition THEN statement ELSE statement   { IfThenElse($1,$2,$3) }


condition :    
| INT EQUALTO INT  { Cond(EqualTo,$1,$3) }   
| INT LESSERTHAN INT {  Cond(LesserThan,$1,$3) }   
| INT GREATERTHAN INT {  Cond(GeaterThan,$1,$3) }

不要忘记在lex文件中为int定义正则表达式

票数 3
EN

Stack Overflow用户

发布于 2013-07-10 14:35:56

您可能已经看过了,但是OCaml手册给出了一个完整的ocamllex/ocamlyacc示例,用于计算Desk Calculator Example的值。

该示例显示,如果您愿意,可以在ocamlyacc操作中计算结果。举个简单的例子,它一点也不难理解。在更实际的情况下,您可能希望构建一个抽象语法树以供以后处理(例如求值)。除了用例是由AST类型的不同构造函数给出的,而不是由不同的语法规则给出的,代码具有相似的风格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17514609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档