yacc

スタート規則って、どういう扱いを受けてるんでしょう。複数のスタート規則を宣言できるような、LALR(1)パーサジェネレータって無いような気がするんですけど、一つじゃないとなにかまずいことがあったりするんでしょうか?

%start compilation_unit
%start expression

とか書けると、ファイル全体をパースするときにはcompilation_unitから開始して、ocamlyaccの中身をパースするときにはexpressionから開始する、みたいにできると、すごく嬉しいんですが。


あ、もちろん、

%start start

start:
    compilation_unit { ... }
  | expression { ... }
  ;

とすれば良いのはわかってますが。