項書き換え
term rewriting_
正規化とも言う
たぶん簡約とだいたい同じ意味
項を正規形になるまで書き換える
ASTをトラバースして書き換える
コンパイル時計算などもここでする #??
弱正規化
強正規化
↓こんなん
code:Stratego/XT
rules
E: Not(True) -> False
E: Not(False) -> True
E: And(True, x) -> x
E: And(x, True) -> x
項書き換えの例
table:例
before after
!true false
0*9 0
[1+1, 3] [2, 3]
項書き換えツールの例
ANTLR
ASF+SDF Meta Environment
Stratego/XT
Haskellでの項書き換えツールってなに #??
自作するもの?ANTLR?
https://github.com/cronburg/antlr-haskell とかあった