generated at
HaskellでParserを作る
より型安全なASTを定義するにはGADTなどを使うといい



Parsecなどを使っている
アセンブリを吐くCコンパイラ
フロントエンドはガッツリ書かれているがコード生成は見当たらない
昔のcommitにはあった
bnfの定義とかもある


Parsecを使って簡単なparseを書く
BNF記法非終端記号が一つ一つの関数に当たる
では、data typeはどうやって決める?
hs
> parseTest expr "(1+2)*7+9" Add (Mul (Add (Nat 1) (Nat 2)) (Nat 7)) (Nat 9)



こういうASTの表現のしかたもある
でも、上のやつの方が扱いやすいかな
hs
data Expr = Natural Integer -- 整数リテラル | BinOp String Expr Expr -- 2項演算:演算子、左辺式、右辺式 deriving (Show) > Right (BinOp "+" (BinOp "-" (Natural 0) (Natural 1)) (BinOp "*" (Natural 2) (Natural 3)))



jsonパーサーを作る

コメントもいっぱい