<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>構文解析</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">parser</rt></rubyb></dfn>とは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット列</anchor>を、期待される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文</anchor>に照らして解釈を試みる操作です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>を行う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ソフトウェア</anchor>、あるいは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ソフトウェア部品</anchor>や該当する機能のことを<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>構文解析器</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">parser</rt></rubyb></dfn>
(<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーサー</anchor></dfn> / <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーザー</anchor></dfn>) といいます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>に含まれる範囲は、場合によって若干の揺れがあります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句解析</anchor>は (広義の) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>の段階の1つですが、
狭義の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>には含めないことがあります。
狭義の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>の結果を使って入力が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一致</anchor>するかどうかを判断したり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>を構築したりする操作は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>に含めたり、
含めなかったりします。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 狭義の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>の前後に行う操作は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>対象によっては存在しなかったり、
複数段に分かれていたりします。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 例えば単純な言語では独立した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句解析</anchor>は存在しないかもしれません。</p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>後の処理によっては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>の動作モードが異なるかもしれません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 例えば<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適合性検査器</anchor>の一部としての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析器</anchor>は、
通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析器</anchor>よりも詳細なエラー報告のために、
通常より厳密な検査を行う (通常より低速な) 動作モードを使うかもしれません。</p></example><figure class="list short"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析器 (Web)</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML構文解析器</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML構文解析器</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSの構文解析</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP接続の処理</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">POファイルの構文解析</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">N-Triples構文解析器</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML構文解析器</anchor></li></ul></figure></body></html>