二重引用符のようなものについての公式の用語はありますか?
-
29-09-2020 - |
質問
多くのプログラミング言語文字列はトークンです。
例えば:
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つのパーサーが同じ実装で終わる可能性があります。