- 557 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 11:08:37 ]
- 上でlex&yaccの話が出てたと思うけど、文字列操作は字句解析と構文解析のふたつで出来てることが多い。
lexは字句解析のことで、文字列を1文字づつ読み込んでトークン、つまり単語に切り分ける仕事をする。 yaccは構文解析のことで、得られたトークンの意味を推測して構文木を作成する。 で、得られた構文木を元にして文字列の意味を翻訳する。 正規表現は、 テキストの文字列に対してパターンマッチを行う強力な道具です。 TEXTファイル中からある単語を置換/検索するのもパターンマッチです。 例えばyaccを使わないで簡易にキーワード(文法上重要なトークン)を探したいときのパターンマッチを正規表現でやるとか出来ます。 regex、OregKitは正規表現プログラムなのでそういったことが簡単に出来ます。 int sprintf(char *str, const char *format, ... ); sprintfは書式formatにしたがって、printf関数と同様の変換を行った出力を、文字列strに格納します。使えるようになると凄く便利。 char *str : 変換した出力を格納する文字列。 const char *format : 書式指定文字列。 ※ 要するに、正規表現は文字列のパターンマッチをするのに対して、sprintf関数は文字列を変換します。だから役割はちがう。
|

|