リストパーサー

今日はルールの持ち方とセマンティックアクションのカスタマイズを考えていたものの考えがまとまらず、結局bjam_grammarを少し手直ししただけです。
今日の差分


ルールの単純化のためにリストパーサーを使ってみました。

and_expr
    =   eq_expr
        %   (   keyword_p("&")
            |   keyword_p("&&")
            )
    ;

今気付いたんですが、

eq_expr
    =   rel_expr
        %   (   keyword_p("=")
            |   keyword_p("!=")
            )
    ;

だとセマンティックアクションが実装しづらいですね。

eq_expr
    =   rel_expr
        >> *(   keyword_p("=")  >> rel_expr
            |   keyword_p("!=") >> rel_expr
            )
    ;

に戻したほうがよさげです。