generated at
ocamllexとocamlyaccでパーサを書く
字句解析器生成器ocamllex
正規表現で定義を .mll に書く
定義からlexerを生成する
生成されたlexerに文字列なりファイルなりを読ませるとtokenizeが完了する
構文解析器生成器
ocamlyacc
yaccの仲間
.mly で以下の定義をする
字句
ocamllexで .mll に書いたのとほぼ同じ
先頭記号とその型
文法定義と評価規則
文脈自由文法に沿った定義をする
.ml .mli を生成する
先頭記号名の関数が定義される
この関数は字句解析器(lexer関数)と文字バッファを受け取る
ocamlyaccとほぼ互換
新しい
ocamllexとocamlyaccそれぞれで生成したtoken定義は同じだと認識されない
.mll .mly どちらかにもう一方を参照するようにしたい
たとえば open Calc_parse として calc_parse.ml 内の定義を参照する
facebook/flowのsemver parserが同じ構成なので参考になりそう