1

Can anyone brief how can I implement if then else in Ocamlyacc. I've defined tokens from lexical analyzer(ocamllex) namely IF, THEN, ELSE. For the if statement, I have defined tokens: GREATERTHAN, LESSERTHAN, EQUALTO for integers. I've searched many tutorials but to no avail!

UPDATE:

I want to interpret the result and return the value of the expression dictated by the if-else statement.

4

2 回答 2

3

您必须定义规则:

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 fil 中为 int 定义正则表达式

于 2013-07-07T22:53:27.620 回答
0

也许您已经看过它,但 OCaml 手册提供了一个完整的 ocamllex/ocamlyacc 示例,用于计算表达式的值:Desk Calculator Example

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

于 2013-07-10T06:35:56.477 回答