私はコードビューティファイアを作成する計画段階にあります( AStyle または ncrustify に似ています)-もともと私はそれらのプロジェクトの1つに貢献するつもりでしたが、ソースから、私にはさまざまな設計目標があり、それらのソースは部外者が簡単に貢献するのが難しい方法で書かれているという結論に至りました。たとえば、AStyleは、ある種のASTを構築する代わりに、isInComment
、foundClassHeader
、isLineReady
などの100を超える状態変数を使用します。
スキャナーとパーサージェネレーター(flexやbisonなど)を使用するか、独自の解析システムを作成するかを決定しています。どちらがより良いアプローチでしょうか?私は大学でコンパイラのクラスを経験したことがあるので、スキャンと構文解析の理論についてある程度の経験があります。以下は、それぞれについて私が考えた利点です。
ジェネレータ
カスタムパーサー
フレックス/バイソンか何もないかの選択ではありません。そこにいくつかのオプションがあります。私は最近のプロジェクトに antlr を使用しましたが、作業するのは非常にいいことです。あなたが考慮しなかったかもしれないいくつかの事柄: