내가 그것을 실행하면 나는이하스켈 행복
terms
: term { [$1] }
| term terms { $1 : $2 }
term
: var '=' int { Assign $1 $3 }
| print var { Print $2 }
같은 구조물이 행복 지금까지 정의한 문법 하스켈을 사용하여, X = 4 pritn X 몇 가지 언어를 구현하기 위해 노력하고있어에 할당 구현
x = 4
print x
y = 5
print y
같은 이상 나는 교류를하고 싶은 이제
[Assign "x" 4, Print "x", Assign "y" 5, Print "y"]
를 얻을 수 구현을 구현하는 방법을 모르겠지만 "할당"을 구현하는 방법을 모르겠다.
행복한 문서가 좋지 않아서 "구현"을하고 일부 환경에 대한 아이디어를 얻었습니다.
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를 사용하여 수행해야한다고 생각하지만 예제를 찾을 수 없습니다. 어떻게 할당 및 인쇄를 구현할 수 있습니까? 또는 정보 또는 예제를 어디에서 찾을 수 있습니까?
아마도이 유용한 질문이 유용 할 것입니다. http://stackoverflow.com/questions/16970431/implementing-a-language-interpreter-in-haskell – ErikR