次の簡単な文法を考えてみましょう。
S -> a | b
文法によって生成される文字列のセットは次のとおりです。
{a、b}
したがって、文法は文字列のセットを生成します。
文法のパーサーは、入力文字列を受け取り、その文字列が文法によって生成できるかどうかを判断します。
したがって、パーサーは文法のレコグナイザーです。
少なくとも、それはパーサーの 1 つの用途です。
しかし、多くの場合、パーサーは他の目的で使用されます。たとえば、文法のパーサーは、入力文字列を受け取り、入力データを含み、文法に準拠するツリー構造を作成する場合があります。
その場合、パーサーはレコグナイザーではなく、データ構造ビルダーです。
さまざまな種類のパーサーがあると結論付けています。
私は論理的に考えていますか?本当にさまざまな種類のパーサーがありますか?
パーサーが作成されたさまざまなタイプのリストを誰かが作成しましたか?
上記の記述に緩みや曖昧さがある場合はお知らせください。私は、これらの概念について正確に説明することを学ぼうとしています。たとえば、「文法は一連の文字列を生成する」ことに同意しますか? それは正確ですか?正しい?