2007-03-01から1ヶ月間の記事一覧

hash_mapを使いたいがため、stlportを入れようとしたけど・・・

hash_mapってvc7.1でも、一応デフォルトで入ってるんだな。 ただ、 std::hash_map<int, int> h; でなくて、 stdext::hash_map<int, int> h; としないと警告がいっぱい出るけど・・・ ("std::"でもコンパイルは可能なので、"#pragma"で警告を消せば良いのだが) ISO C++の標準じ</int,></int,>…

脳内キャッシュ

記憶なんてただのキャッシュだって! 覚えて置けないことは外部に置いておけばいいのだよ。 しかし、実際には外部記憶からキャッシュにロードするには、外部記憶装置のアドレス(保管場所)を覚えなければいかんのだった。 で、JavaCCの本ってどこいったっけ…

またlexeme_dではまる

以下はコンパイルエラー。 ※c_id_p, code_blockは自作のparser identifier = c_id_p - keywords; foreach_stmt = lexeme_d[ str_p("for") >> +blank_p >> identifier >> +blank_p >> "in" >> +blank_p ] >> exp >> eol_p >> code_block >> "end" ; しかし、…

lexeme_dの使い方。

以下は間違い。 return_stmt = str_p("return") >> lexeme_d[+blank_p] >> !exp; 正しくは、以下。 return_stmt = lexeme_d[str_p("return") >> +blank_p] >> !exp;

eol_pにマッチしない

こんな感じでparseしてるんだけど、ruleに記述したeol_pにどうやってもマッチしない。 ifstream in(argv[1], ios_base::binary); // 取りあえずバイナリにしてみた。 vector<char> vec; std::copy( istream_iterator<char>(in), istream_iterator<char>(), std::back_inserter(</char></char></char>…

ネストしたlexeme_dはコンパイルエラー

以下のコードはコンパイルエラーとなる。 identifier = lexeme_d[ ((alpha_p | '_') >> *(alnum_p | '_')) ] ; script_val = lexeme_d[ ch_p('@') >> identifier ] ; 以下のように書き換えるとコンパイルに通る。 script_val = lexeme_d[ ch_p('@') >> ((alp…

演算子の優先順位ってどうやってるんだろー。 とか思って、「Spirit Applications Repository」からdscriptなる怪しげな言語の実装を参照してみる。 add_expr = mul_expr >> *(add_op >> mul_expr) ; add_op = ch_p('+') | '-' | '@' ; mul_expr = unary_exp…

スクリプトの実装

構文解析にはboost::spiritを使用。 シンボルテーブルの値として、32bitのidを指定。 上位8bitをシンボルの属性とし、下位24bitをシンボルの識別子とする。 シンボルと値の結びつけは、上記のシンボルテーブル(「シンボル文字列=>シンボルid」の対応関係を…

最高到達Level 59 (戯兎に告ぐ: Advance) ワンミス死亡直前でクリア。 今日は新しいスティックを買った。 教訓を生かして径が小さく、軽いものを選んだ。 なんか、やたらと叩きやすくなった気がする。 スティックは秋葉原のラオックスで買ったのだけど、ここ…

最高到達Level 55 (Atalante: Advance) 「この子の七つのお祝いに」(Adavance: Level 67) で30秒ぐらいで死亡。 いつかクリアしてやる・・・

epsilon_p/eps_pはHaskellのParsecで言うと'try'にあたるのか? PS ぜんぜん違った・・・

Boostの標準パッケージのSpiritはfch_pとかをサポートしていないようなので、Spiritの公式サイトからインストールする必要あり。 と、思って再インストールしてみたけれど、やっぱりfch_pは存在しない。 なんで? ああ、参考にしたドキュメントが古かったら…

最高到達Level: 48 (戯兎に告ぐ Basic) 初回成功曲: チカラ (Advanced) 「戯兎に告ぐ」でクロスハンドを習得したおかげで、ようやくチカラのAdvancedがクリアできた(Rank Bなのでギリギリだが)。 左手首が痛い・・・ あと、握りの部分が太いスティックは自分…

今日の成果

本日の最高到達Level: 48 (戯兎に告ぐ Basic) スティックを持つ位置は重心より若干手前が良い。 重心より遠すぎると、梃子の原理で余計に力が必要だし、固有振動数が低くなって(たぶん)早く叩けない。 逆に重心ぴったりだと、叩いたときの反動を抑えきれな…