Slide 17
Slide 17 text
beginでbodyを包む部分を書く
syntax-case風の構文で変換規則を書く
(define-pass remove-multi-body-lambda :
piyo-lang (e) -> single-body-lambda-piyo-lang ()
(Expression : Expression (ir) -> Expression ()
((lambda (,x ...) ,(e) ,(e*) ...) `(lambda (,x ...) (begin ,e ,e* ...)))))
本体
パターン
・ 与えた式の外側から見ていき、パターンにマッチしたものを展開部で置き換え
る
・パターン内のメタ変数にマッチしたものは、本体部で参照できる
・この展開を再帰的に行うには、パターンのその部分をリストで囲う