右線形文法-∞ポイント
S->ε
S->1A
S->0S
S->9I
S->3C
S->5E
S->4D
S->2B
S->7G
S->6F
S->8H
F->3K
K->0F
A->2L
K->1G
A->5B
A->0J
B->7A
J->5A
G->6K
G->8S
H->9K
F->5S
K->2H
I->6E
I->5D
J->4S
D->8I
B->6S
K->9B
F->6A
G->9A
K->6L
K->4J
C->1E
L->8K
E->5C
B->4K
C->0D
J->2K
D->2C
A->9F
J->7C
C->6J
C->8L
E->0K
L->0C
B->9C
E->2S
L->6I
I->0L
J->0I
B->2I
I->3B
H->1C
I->7F
C->4H
F->1I
G->4I
I->0G
C->3G
F->8C
D->0A
E->3A
I->9H
A->7D
C->2F
H->7I
A->8E
F->9D
E->8F
A->6C
D->6G
G->0E
D->5F
E->9G
H->2D
D->7H
H->3E
I->2A
K->3I
C->9S
C->7K
E->4B
D->1B
L->1D
J->9E
I->1S
E->1L
J->8D
D->9J
L->2E
J->3L
B->5L
B->8B
L->7J
L->9L
G->1F
A->4A
K->5K
B->3J
H->6H
E->7E
J->1J
D->4E
G->2G
J->6B
D->3D
E->6D
H->4F
I->4C
C->5I
F->0H
H->5G
K->7S
G->3H
L->5H
H->8J
A->3S
H->0B
B->1H
G->7L
K->8A
F->2J
F->7B
L->4G
F->4L
A->1K
B->0G
G->5J
L->3F
次に、「実行」の選択方法に応じて、「はい」または「いいえ」が出力されます。
真面目なエントリーではなく、ちょっとした楽しみ;)
編集:
おそらく私は少し説明する必要があります。
文法を定義するルール(プロダクション)の集合である言語。言語は、アルファベットによって形成され、文法の規則に準拠する可能性のあるすべての文字列と考えることができます。
ここで、アルファベットはすべての10進数のセットです。文法の規則では、すべての文字列は13で割り切れる10進整数を形成する必要があります。
上記の文法を使用して、文字列が言語に属しているかどうかをテストできます。
文法の規則には、終端記号(言語の要素)と再帰的に置換される非終端記号が含まれます。
例で何が起こっているかを説明するのは簡単です:
たとえば、テストする文字列が71955であるとしましょう。
常に開始記号(非終端記号)があります。上記の文法の場合、これは 'S'です。この時点では、文字列から文字を読み取っていません。
current pattern symbol read
S ε
ここで、文字列の最初のシンボル「7」を読み取り、「->」の左側に現在のパターンの非終端記号を含む文法のルールを探します。 「->」の右側にシンボルがあります。幸いにも1つ(S-> 7G)があるので、現在のパターンの非終端記号を新しいルールの右側に置き換えます。
current pattern symbol read
7G 7
パターンに非終端「G」があり、次に読み込む記号は「1」です。したがって、「G-> 1」で始まる文法のルールを探します。 (G-> 1F)、非ターミナルを新しいルールのRHSに置き換えます。
current pattern symbol read
71F 1
このプロセスを繰り返してください:
次のルール:F-> 9D
current pattern symbol read
719D 9
次のルール:D-> 5F
current pattern symbol read
7195F 5
次のルール:F-> 5S
current pattern symbol read
71955S 5
この時点で、文字列にはもう記号はありませんが、そこには別の非終端記号があります。文法の最初の規則から、「S」を空の文字列(ε)に置き換えることができることがわかります。S->ε
そうすると、現在のパターン:71955εが得られます。これは71955と同等です。
文字列内のすべてのシンボルを読み取りましたが、パターンには非終端記号は含まれていません。つまり、文字列は言語に属しているため、71955は実際には13で割り切れます。
すなわち、目標はパターン=文字列にすることです。非終端記号が残っている場合、文字列内のすべての記号を読み取った後、文字列は言語に属しません。同様に、文字列にまだ読み取るシンボルがまだあるが、文法に進むことができないルールがある場合、文字列は言語に属しません。