x = 4 と pritn x で言語を実装しようとしています.haskell を使用した構造は満足しています.これまでのところ、このような文法を定義しました.
terms
: term { [$1] }
| term terms { $1 : $2 }
term
: var '=' int { Assign $1 $3 }
| print var { Print $2 }
次のようなものに実行すると
x = 4
print x
y = 5
print y
私は得る
[Assign "x" 4, Print "x", Assign "y" 5, Print "y"]
実際に実装したいが「代入」の実装方法がわからない
私は haskell が苦手ですが、幸せなドキュメントから「let」の実装を見て、いくつかの環境 p が渡され、評価されるというアイデアを得ました
Exp : let var '=' Exp in Exp { \p -> $6 (($2,$4 p):p) }
| Exp1 { $1 }
Exp1 : Exp1 '+' Term { \p -> $1 p + $3 p }
| Exp1 '-' Term { \p -> $1 p - $3 p }
| Term { $1 }
Term : Term '*' Factor { \p -> $1 p * $3 p }
| Term '/' Factor { \p -> $1 p `div` $3 p }
| Factor { $1 }
Factor
: int { \p -> $1 }
| var { \p -> case lookup $1 p of
Nothing -> error "no var"
Just i -> i }
| '(' Exp ')' { $2 }
「割り当て」の実装はこのenvで何かをしなければならないと思いますが、例が見つかりませんでした。assign と print を実装するにはどうすればよいですか? また、その情報や例はどこにありますか?