やったこと
4/2
YY_BUFFER_STATE bp;
yyin = fp;
bp = yy_create_buffer(yyin, YY_BUF_SIZE);
yy_switch_to_buffer(bp);
yylex();
yy_delete_buffer(bp);
return 0;
YY_BUFFER_STATE bp;
yyin = fp;
bp = yy_create_buffer(yyin, YY_BUF_SIZE);
yypush_buffer_state(bp);
yylex();
yypop_buffer_state();
return 0;
yyin = fp;
yypush_buffer_state(yy_create_buffer(yyin, YY_BUF_SIZE););
yylex();
yypop_buffer_state();
return 0;
- lexが生成するcソースを読む場合、cソース内を下記で検索するのが早い
- YY_DECL, yylexの定義
- yy_flex_debugはcソースのテーブル後のロジック開始
4/3
- lex調査
- デフォルト:マッチしないスキャナの入力を 標準出力 に出力する
- オプション -s
- デフォルトルール (マッチしないスキャナの入力を 標準出力 に出力する) が抑制されます。ルールにマッチしない入力が表れたとき、スキャナは エラーで異常終了します。
スキャナのルールの組に抜けが無いかを確認する場合に有効です。
- yy_scan_bytesを実行するとYY_CURRENT_BUFFERのポインタ値が変わる
- よって、YY_CURRENT_BUFFERを退避させたい場合はyy_scan_bytesより前に退避させる必要がある。
4/4
- プログラム
- 昼休みにfcgiとのI/F検討。モジュール化が好みです。
- K先輩を光に連れて行く、社長が電話の人とポジション出しについて熱くしゃべりまくっていた。
4/5
- プログラム
- 昼休みにcgiの仕様書ながめてたら、衝撃の事実が発覚した。僕がhttpだと思っていたメッセージの形式はcgiプロトコルのメッセージ形式であった。
- http_lexerはいらない。cgi_lexerが必要だ。内容似たりよったりなので、コピればいいか。
4/6
4/7
4/8
参考