単純な文法と通常の文法の関係


7

ピーターリンツによって書かれた「形式言語とオートマトン入門」を読んでいて、最初の5つの章を読んだ後、互いに非常に似ている単純で規則的な(特に正しい線形)文法の問題に直面します。

これらの間にはどのような関係がありますか?違いはなんですか?(明らかにスタックを使用せずに)単純な文法の(非決定的)有限オートマトンを作成できますか?


2
簡単な文法に詳しくないのですが、定義を思い出したり、参考にしたりできますか?
jmad

回答:


13

単純文法(s-grammar)は、すべてのプロダクションの形式がでありは終端であり、すべてのはであり、任意のペア。AaB1B2...BnaB0a

明らかに、左から右への各終端記号と非終端記号が適用する生成を一意に決定するため、すべてのs言語(s文法によって生成される)は明確であり、簡単に解析されます。たとえば、文字列が場合、ペアのは、解析の最初の生成を一意に決定します。以下同様に、各ターミナルとそのすぐ右側の非ターミナルについて同様に続きます。したがって、s-文法で定義された言語は、先読みなしで一度に1つのシンボルを解析でき、線形解析時間、実際には時間。abcSa|バツ|

S文法はそれ自体ではそれほど重要ではありません。なぜなら、ほとんどの実際の言語はその能力を超えているからです。しかし、これらは、線形時間で解析される他の文法への足がかりです。たとえば、文法では、構文解析中に生成を決定するために必要な先読みに境界があります。実際には、s-文法は文法です。LLkkLL0

オートマトンへの接続は、sランゲージが単一の状態のプッシュダウンオートマトンで解析され、入力シンボルとトップスタックシンボルを見てプッシュするスタックシンボルの文字列を決定することです。しかし、s文法以来...

SaSB|Ba

...非正規言語は、一般に、確定的または非確定的な有限状態オートマトンによって認識できません。{aa0}


2
それらを比較するもう1つの方法は、意思決定の問題です。単純な文法の場合、等価問題(2つの文法が同じ言語を生成するかどうか)は決定可能ですが、包含問題(1つの文法が他の文法によって生成される言語のサブセットを生成するかどうか)は決定できません。通常の文法では、どちらの問題も決定可能です。
reinierpost
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.