Tweets by
当日記は、牧野由依さんを応援しています。
カレンダー
指定の年月旬を表示タイトル表示タイトル一覧キーワード検索Acknowledgements
|
2001年04月11日(水) [過去の04月11日]
[天気:曇](会社・自宅)<労働900-1910>
1 [Web] 余興[ コメントする ]
2 [Books] 誤読
『Rubyプログラミング入門』原 著、まつもと監修、オーム社 PP.330-332
「8.6.3 正規表現コンパイラ」について。
Rubyの組み込み正規表現に頼らず、自前でスキャナを書いてRegexというクラス *1 を定義しようという話で、 文字からRegexオブジェクトを生成するRegexCompilerクラスを書くわけだが。 構文解析を、expr, sequence, term, factorといった要素に対応するメソッドが 下位要素のメソッドを呼び出しては値を返すという形で進めている。 ここで各メソッドが、lex&yaccを使った方法でいうところのlexが行うスキャンと yaccが行う構文解析を一緒くたにしていると勘違いしてしまった。 つまり構文解析ルーチンが、次のソースを正規表現で切り出しては読んでいる、と。 実際は、コンストラクタの最初で文字列にscanメッセージを送って トークン(文字列)の配列に分解し、各要素に対応する解析メソッドが 読み込んでいるのはこの配列から切り出したトークン文字列だったのだ。 正規表現コンパイラなので、切り出されたトークンも文字列として表現すれば 正規表現に見える。 なぁるほど。 @ そういえば:
hnfの場合、コマンド行と普通の行とでは、スペースの意味が違うので
文脈自由文法とはいえないのではないか。
*1: Ruby組み込みの正規表現のクラス名は``Regexp''。
[ コメントする ]
3 [Food] 飯
朝食:苺ジャムつきトースト、ホットミルク
昼食:鶏の南蛮漬け@社食 夕食:いわしフライ、オクラのゴマ和え(既製惣菜) [ コメントする ]
4 [Web] 公開ntpサーバー
ネタ元→
DameDameDiary
→
どーでもいいこと
→
Experimental NTP Servers (Public Stratum 2)
。
早速ntpdate。 まぁうちには電波時計もあってそこそこ受信したりしなかったりしてるので、 手で入力してもいいんだけどね。 [ コメントする ]
|