ドラゴンブックを読んでいます。本からのテキストの引用 (3.1.4 語彙エラー、Pno 114)
字句解析器が、他のコンポーネントの助けなしに、ソース コード エラーがあることを判断するのは困難です。たとえば
fi
、コンテキスト内の C プログラムで文字列が初めて検出された場合:fi ( a == f(x) ) ...
語彙アナライザーは
fi
、キーワードのスペルミスなのif
か、宣言されていない関数識別子なのかを判断できません。はトークン ID の有効な語彙素であるためfi
、字句解析器はトークンid
をパーサーに返し、コンパイラーの他のフェーズ (この場合はおそらくパーサー) に文字の転置によるエラーを処理させる必要があります。
これを読んだ後、私は少し混乱しています。私の理解では、字句解析器は左から右にテキストの処理を開始し、パターンが一致するたびにトークンを返します。一致するキーワードがある言語の場合if
、どのように一致させることができfi
ますか?
何かご意見は?