これは何? LR1 LALR1 のパーサジェネレータです。元のTypeScriptのパーサジェネレータ http://tatamo.81.la/blog/tags/parser-generator/ を Scala に移植した後に OCaml に移植したものです。 リファクタリングしてできるだけわかりやすくするようにしています。
目標は、字句解析と、パーサと、パーサジェネレータを分離してLR構文解析を理解しやすくすることです。 高速性能を求めず、できるだけ単純な構造を目指します。
lexerのフォルダがまずあって、parserが次にあります。あとはパーサジェネレータと全体のテストがあります。 リファクタリング途中でごちゃごちゃしているのですが、わかりやすくしていきたいと考えています。
OCaml が必要で、OUnitをテストに使っています。
opam install ounit
字句解析のみのテストは以下のように行います。
cd lexer
make
cd ..
パーサのみのテストは以下のようにします。
cd parser
make
cd ..
全体のテストは以下のようにします。
make
MIT