質問

多くのプログラミング言語文字列はトークンです。

例えば:

 token               ::= '"' string
                       | digit nat

 string              ::= char string
                       | '"'

 nat                 ::= digit nat
                       | ϵ
.

これは、プログラミング言語のTOKE文法のためのLL(1)文法です。

stringを解析するときは、各"の最後にstringがあるため、次の設定を確認する必要はありません。

natと比較して、stringは解析がより簡単です。

私の質問は

この種の文法についての公式用語はありますか?

ありがとう。


編集:

元の文法には何らかの間違いがありました。@riciさん、私の過ちを指摘してくれてありがとう。

役に立ちましたか?

解決

Folllowセットは、stringまたはnatの解析には使用されません。どちらの場合も、パーサーは単に入力が有効なシンボルのセットにあるかどうかを判断する必要があります。 natの場合、有効なシンボルは数字です。 stringの場合、それらは"以外の文字です。 (実際の言語では、パーサーは\のチェックもチェックします)。しかし、ケースの両方では、チェックが必要であり、1つのテストが別のテストが「より単純な」であると言うことに対して良好な基準はありません。 (実際には、両方のチェックは単純なテーブルルックアップになる可能性があります。だから、それらはO(1)です。)

フォローセットは、文法にεプロダクションが含まれている場合にのみ必要です。その後も、パーサの行動は複雑ではありません。より複雑なものは、パーサーを構築しています。それは実際には取引の大きなものではありませんが、「εフリーの文法」が物事であることは十分に顕著です。明示的に暗黙的に終わった繰り返しの違いを説明するための一般的な語彙があるとは思わない、そして区別が厳密に定義するのが非常に難しいとは思わない。 stringは、末尾の"を収集するために異なるルールを使用したパーサーによって解析されます.2つのパーサーが同じ実装で終わる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top