yacc
スタート規則って、どういう扱いを受けてるんでしょう。複数のスタート規則を宣言できるような、LALR(1)パーサジェネレータって無いような気がするんですけど、一つじゃないとなにかまずいことがあったりするんでしょうか?
%start compilation_unit %start expression
とか書けると、ファイル全体をパースするときにはcompilation_unitから開始して、ocamlyaccの中身をパースするときにはexpressionから開始する、みたいにできると、すごく嬉しいんですが。
あ、もちろん、
%start start start: compilation_unit { ... } | expression { ... } ;
とすれば良いのはわかってますが。