タグ

ブックマーク / www.kmonos.net (4)

  • letsboost::statechart

    sample サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0] 「State Map Compiler」という記事の例をBoost.Statechartで書いてみました。 「お金を入れたら一人だけ通過できる門」を実装しましょうというお題で… 門には「通過してOK(Unlocked)」な状態と「通過しちゃだめ(Locked)」の2つの状態があります。 Locked状態でお金を入れる(Coin)とUnlocked状態に移って、逆に、Unlocked状態で人が一人通る(Pass)と、 Locked状態に移ります。Locked状態なのに強行突破するバカ者がいる(Pass)と、Alarmアクションを実行。 Unlocked状態でさらにお金を入れてくれる人がいたら感謝します(Thankyou)。 #include <iostream> #include <boos

  • letsboost::spirit

    abstract 必要なヘッダ <boost/spirit/include/qi.hpp> 構文解析の基機能, <boost/spirit/include/phoenix.hpp> SemanticAction記述用ライブラリPhoenix, <boost/spirit/include/karma.hpp> 文字列生成の基機能, ..., <boost/spirit/include/classic.hpp> 旧バージョン(Spirit v1)のAPI 出来ること 字句解析/構文解析(LL∞)/文字列化 リファレンス en / jp sample サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0] #include <iostream> #include <string> #include <vector> #include <boost/fusion

  • Dの契約プログラミング vs C++ - プログラミング言語 D (日本語訳)

    多くの人が、D の契約プログラミング(DbC) は既に C++ でできる以上のことを何もつけ加えていない、と私に書き送ってくれました。 そして彼らは、 C++DbC を行う技術を示してそれを説明しようとします。 DbC についてもう一度考え直して、D でどのように実現されているか、 そしてそれぞれC++の様々なDbCテクニックと比較していく、 というのは意味のあることでしょう。 Digital Mars C++C++ への拡張 としてDbCをサポートしていますが、ここではこれについては触れません。 C++の標準ではなく、他のC++コンパイラでは全くサポートされていないからです。 D での 契約プログラミング これは D の 契約プログラミング という文書により詳しく説明されています。 まとめると、D での DbC は次のような特徴を持ちます: assert が基的な"契約"に

  • Here a Const, There a Const - プログラミング言語 D 2.0

    Here A Const, There A Const by Walter Bright ちょっとしたプログラムを書くなら、柔軟で寛大で、 そんなに杓子定規でないようなプログラミングシステムが便利です。 しかしプログラムの複雑さが増すにつれて、 コード中の宣言の意味をコードそのものできっちり記述することに利点が出てきます。 プログラマは、巨大なアプリケーションを部分部分に区切って、 特定の状態変化の影響を狭い範囲に限ることができるようにすべきです。 そうすることで、遠く離れた位置にあるコードが同じデータを書き換えるという結合を避けることができます。 コードではなくドキュメントに書くという方法ではどうしても、間違った、ミスリーディングな、 不完全で古い、そもそも記述されないドキュメントしか残らない危険があります。 このような場面が、"const性" の重要な使い道です。 C や C++ には

  • 1