HaskellでParserを作る
より型安全なASTを定義するにはGADTなどを使うといい
Commits · sguimmara/kern
Parsecなどを使っている
アセンブリを吐くCコンパイラ
フロントエンドはガッツリ書かれているがコード生成は見当たらない
昔のcommitにはあった
bnfの定義とかもある
Utotch Blog: Haskell で parser を書くには (初心者編)
Parsecを使って簡単なparseを書く
BNF記法の非終端記号が一つ一つの関数に当たる
では、data typeはどうやって決める?
code:hs
parseTest expr "(1+2)*7+9"
Add (Mul (Add (Nat 1) (Nat 2)) (Nat 7)) (Nat 9)
Parsecで構文解析して構文木を作る - Kludge Factory
こういうASTの表現のしかたもある
でも、上のやつの方が扱いやすいかな
code:hs
data Expr = Natural Integer -- 整数リテラル
| BinOp String Expr Expr -- 2項演算:演算子、左辺式、右辺式
deriving (Show)
Right (BinOp "+" (BinOp "-" (Natural 0) (Natural 1)) (BinOp "*" (Natural 2) (Natural 3)))
https://qiita.com/hiruberuto/items/160fe92376e795168acd
https://mike-neck.hatenadiary.com/entry/2015/06/15/165110
jsonパーサーを作る
https://qiita.com/esumii/items/f077b951171e4f15c347
コメントもいっぱい