有人可以給我一些幫助建立一個ocaml的解釋與語法的語言:ocaml的解釋
Prog ::= Def* Expr
Def ::= id id* = Expr
Expr ::= int | id | Expr '+' Expr | Expr '*' Expr | id Expr* | if Expr then Expr else Expr
到目前爲止,我這樣做:
type expr = I of int
| Id of string
| Add of expr * expr
| Multiply of expr * expr
| If of expr * expr * expr
let rec evaluate = function
| I n -> n
| Add(e1,e2) -> evaluate e1 + evaluate e2
| Multiply(e1,e2) -> evaluate e1 * evaluate e2
| If(a,b,c) -> if evaluate a<>0 then evaluate b else evaluate c
這是什麼好?
您可以請示例代表定義過程的代碼嗎?我不需要代碼解析,並且我沒有寫Id構造函數,因爲我不知道如何,如果你能告訴我。 – Spreadzz
@Spreadzz這個類型只是類似於'type def = string * string list * expr'或者如果你想區分變量和函數定義,'type def = VarDef of string * expression |字符串*字符串列表*表達式的FunDef。 – sepp2k
你能告訴我在我的解釋器中添加和乘法的類型def,所以我可以完全理解? – Spreadzz