>>171
>普通にJavaScriptのBNFを書くようになるのでしょうか?
基本的には

line = msg ";"
msg = IDENTIFIER ["(" [msg ("," msg)*] ")"] (line | "{" line* "}")

この2行。あとリテラルと演算子が入るけど。
ただ、

if (flag)
    expression01;
else
    expression02;

みたいな文では、msg が2つに分かれちゃうから……どうしようかな、とは考えていたり。