PEG.js のかわりに Peggy を使う

PEG.js は長い間メンテされておらず、今後もされないことが想像されるので、Peggy というフォークプロジェクトが立ち上がったらしい。いつからあるのかと思ったら今年の4月だった。今年動き始めたということもあって今のところは活発に動いているし、機能面でも PEG.js から発展しているので、乗り換えてもいいかなと思った。

気に入ったのは以下の新規構文。

こういうコードがあったとして、

Digit = "(" digit:[0-9] ")" { return digit }

Peggy ではこう書ける。

Digit = "(" @[0-9] ")"

単に値を return するだけのアクションはラベルの前またはラベルのかわりに @ を付与すると値を return するだけのアクションを書いたのと同じように振る舞う。これは実際便利で、こういう単に値を return するだけのアクションを書く機会は少なからずある。

ほかパフォーマンスの改善やバグ修正、typescript 対応などいろいろあるので、現在進行系で PEG.js 使う機会がある人は Peggy に乗り換えてもいいんじゃないかと思う。