ちょっとした理由で、Javaのパーザー生成系を調べてみました。
一番ポピュラーそうなJavaCC(https://javacc.dev.java.net/)をいじってみたのですが、BNF(構文記述)とJavaコード(アクション)が混じる記述にウンザリ(yaccでも同じです)。JJTreeというツールと一緒に使うと、さほどアクションを書かずに構文木を作ってくるようではありますが。
いずれにしても、JavaCCの構文記述は汚い感じがします。しょうがない、がまんすればいいハナシか、と思っていたら、SableCC(http://sablecc.org/)というのを見つました。SableCCでは、アクションを書き込まないので、構文記述がスッキリと美しい。パーザー全体を作る手法がyaccなどの伝統的なものとは違うのでとまどいます(ワタシャとまどっている)が、このスッキリ感はすばらしい。