ラムダ式のパーサーを書き、
data expr = Symbol of string | Lambda of string * expr | App of expr * expr
ファイルを作成するとき.mly
、式のシーケンスという考えをどのように表現できますか
e1 e2 e3 e4
として解析する必要があります
App ((App (App e1 e2) e3) e4)
ルールの使用:
%public expr_expr:
| ID { Symbol ($1) }
| NUMBER { Symbol ($1) }
| LPAREN expr_expr RPAREN { ($2) }
| LAMBDA ID ARROW expr_expr { Lambda ($2, $4) }
| expr_expr expr_expr { Apply ($1, $2) }
(e1 , (e2 , (e3 , e4)))
とは対照的に、構造を与える(((e1, e2), e3), e4)
。トークンではなくルールの結合性を制御する方法はありますか?