Semantic Grammar

昨日の論文の中身:

Semantic Grammar,つまり意味まで構文定義に書く方法...なんか普通にyaccとかに取り入れられている気もする

command = < ↓ env  ↑ λs.(var (exp s) s) >
  variable< ↓ env  ↑ type  ↑ var >
   ':='
  expression< ↓ env  ↑ type  ↑ exp >

ただし

 env :: name-> type
 com :: s -> s  ( sはstateのこと )
 exp :: s -> val
 var :: val -> com 

最後の var :: val -> com がわかりづらいけど
たとえば 変数 x は 値 5 を引数にとり, x:=5 という命令を作り出す関数
ということらしい.

さすがに82年の論文なので,オブジェクト指向のプログラムの文法は載っていない...ためしに作ってみるか?