bjam_parserリライト中

昨日作成したarg_p等を使ってbjam_parserをリライトしました。
今日の差分
とりあえずセマンティックアクションなしの文法チェックのみの状態です。


今回はなるべく正確に実装するため、bjamのjamgram.yを参考にしています。
jamgram.yをよく読むと、いくつか意外な文法が見つかりました。
例えば、

rule r return hoge ; # セミコロンが必要
ECHO [ r ] ; # 「hoge」を出力

のようにルール定義にブロック以外のものを置けます。
おそらく文法の定義ミスだと思いますけど。


また、に書いた「途中で字句解析器を切り替えるのってどうよ?」問題はやっぱりまずかったようで、先読みされたトークンは意図したものにならないことがあります。
ルール呼び出しの最初の引数にキーワードを指定できないのはこれが原因のようです。
新しいbjam_parserはこれをパーサーレベルで処理しているので問題ありません。