2013-07-07 4 views
1

Может ли кто-нибудь сообщить, как я могу реализовать, если тогда еще в Ocamlyacc. Я определил токены из лексического анализатора (ocamllex), а именно IF, THEN, ELSE. Для оператора if я определил токены: GREATERTHAN, LESSERTHAN, EQUALTO для целых чисел. Я искал много учебников, но безуспешно!if then else in ocamlyacc

UPDATE:

Я хочу, чтобы интерпретировать результат и возвращает значение выражения диктуемого если-иначе заявления.

ответ

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) } 

Не забудьте определить регулярное выражение для междунар, в вашем ЛЕКС фил

+0

Могли бы вы также определить функции IfThenElse, Cond для меня? Заранее спасибо! – user2352241

+0

Это просто тип, который вы определяете: Cond of op * int * int и т. Д. – Ontologiae

+0

Могу ли я использовать Ocaml для оценки этого - как интерпретатор? – user2352241

0

Возможно, вы видели его, но руководство OCaml дает полный ocamllex/ocamlyacc, который вычисляет значения выражений: Desk Calculator Example.

Пример показывает, что вы можете рассчитать свой результат в действиях ocamlyacc, если хотите. Для простого примера это совсем не сложно. В более реалистичном случае вы, вероятно, захотите построить абстрактное синтаксическое дерево для последующей обработки (например, оценки). Код имеет аналогичный вкус, за исключением того, что случаи задаются разными конструкторами вашего типа AST, а не разными правилами грамматики.

 Смежные вопросы

  • Нет связанных вопросов^_^