C++で計算機制作
諸事情によりC++で機能を多く持った計算機を作ることにした。 ダメだったものとかいろいろあったので書いておきます。
候補は、
がありました。
すべて試しましたが、 boost::spirit が安定している感があります。
欠点を挙げると、
- 自前
複雑な構文解析を行うのに苦労した。
-2-2といった前置の演算子と後置の演算子を混ざると死ぬ
高確率で機能を追加するとめちゃくちゃになる。
- bison + flex
bisonにC++モードがあるとのことで利用。
マニュアルが全て英語でクソ。
bisonをC++で利用しているサンプルソースだけ見ても
.ll や.y なので完全には理解できず意味不明でした。
独自表現多すぎぃ
ANTLRWorksはJavaしか吐き出せないので使えないゴミ。確認ツールにしかならない
.g ファイルをSyntaxしてくれる奴が sublimeにあったけどクソ。
C++(C言語)がANTLR4に対応してない。参考になる文献が少ない
悪いところしか思いつかないや・・・
- boost::spirit
エラーが意味不明になる。
という感じです
結論
boost::spirit が良い。
//プロトタイプは自前で作れましたが、現在制作中のVerでは boost::spirit で制作してます。
//Objective-C++という黒魔術をしなければならなさそうですが頑張ります。
//てか boost::spiritでもキツい