Boost.Spiritで構文木を作る……?
困った。pt_parseを使おうが、ast_parseを使おうが、マッチ文字長が0のノードが消えてしまう。 文法: nums = *int_p alps = *alpha_p nums_alps = nums >> al […]
困った。pt_parseを使おうが、ast_parseを使おうが、マッチ文字長が0のノードが消えてしまう。 文法: nums = *int_p alps = *alpha_p nums_alps = nums >> al […]
Boost.Spiritでオプションファイル解析。 アプリケーションに渡すちょっとしたオプション指定ファイルを作ろうと思ったので、boost::spiritで構文解析器を書いてみることにしました。 まずは文法を決めなけれ […]
C言語の三項演算子(正式には条件演算子。C言語には項を三つ取る演算子はこれだけなので、単に三項演算子と呼ぶことがある)はとても便利な演算子だ。高校時代、K先輩とC言語で一番好きな演算子はやっぱり三項演算子でしょ!と意気投 […]
void foo(void);みたいに、引数無しでもvoidを書く癖が染みついてしまっている。C#でこう書くとエラーになるので、今後はC++でもvoidを書かないようにしてみるかな。今後C言語使うことも無いだろうし。
処理系の独自拡張は出来るだけ使いたくないのだが、アセンブラで書く量を出来るだけ少なくしたいと思うと、使用もやむなしといったところ。
結局exeファイルが1MB増えた。今回追加した部分で2×2×14×2×2×2=448通りコードを生成させているわけで、関係する一つの関数が数百バイト程度でも、数百キロバイトまで増えてしまうことになる。これはさすがにイタイ […]
たった一ファイルなのに、こんなに速いマシンなのに、コンパイル時間かかりすぎ。テンプレートとマクロで各モードの全組み合わせを生成しているせいだと思う。 と、.objファイルのサイズを見たら……100MB!!? あ、ありえね […]
いけね、一番きついループの中で仮想関数を呼んでた。あまりに自然で非仮想だと思いこんでた。とりあえずこれで二倍くらいにはなる。あとは範囲チェックを外に追い出したいんだけど、こういうのは証明が苦手だと大変なんだよなぁ。ただこ […]
Rubyをいじった後だと特に感じるんだけど、C++って打鍵数多すぎる。HogeHogeContainer::const_iteratorとか何文字打たせるんだ?(型推論くれ)って感じ。いや、短くしようと思えば色々手はある […]
BOOST_FOREACHってどうよ? 正直、積極的に使う勇気がもてないで居るんだが。