第四回: 字句解析の実装、lex 系ツールの使い方方
2005年 5月 13日
© 2005 Martin J. Dürst 青山学院大学
これらは全て同じ力を持って、正規言語を定義・受理する
a(b|c)*a
(Element) Content Model ((要素) 内容モデル) の定義: http://www.w3.org/TR/REC-xml/#sec-element-content
XML の文法の完結なまとめ: http://www.mulberrytech.com/quickref/
(Element) Content Model ((要素) 内容モデル) の例:
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
この内容モデルに相当する XML の部分の一例:
<div1><head>This is the Title</head> <p>Short introduction...</p> <div2>...</div2> <div2>...</div2> </div1>
要素内容モデルは要素を字にした正規表現。
字句解析 (lexical analysis)
構文解析 (parsing; syntax analysis)
意味解析 (semantic analysis)
最適化 (optimization)
コード生成 (code generation)
前半 (解析) もしくは全体は構文解析が中心
構文解析は getNextToken() みたいな関数で字句解析から必要におおじてトーケンを取り寄せる
構文解析は必要におおじて意味解析などを呼ぶ
主な要点:
選択肢:
簡単な文法の時に使う
次の文字 (バイト) をいつも読み込んだ状態
入力、トークン、次の文字にはグローバル変数を使うのが多い
トークンは種類の他、数字、識別子のなどの場合追加情報が必要
準備:
予定: