Tata Bahasa Linear Kanan - ∞ poin
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
Kemudian tergantung pada bagaimana Anda memilih untuk 'menjalankannya, itu akan menampilkan' ya 'atau' tidak '.
Bukan entri serius, hanya bersenang-senang;)
EDIT:
Mungkin saya harus menjelaskan sedikit.
Sebuah tata bahasa adalah seperangkat aturan (produksi) yang mendefinisikan bahasa . Bahasa dapat dianggap sebagai semua string yang mungkin dibentuk oleh alfabet, yang sesuai dengan aturan tata bahasa itu.
Di sini alfabet adalah himpunan semua digit desimal. Aturan tata bahasanya adalah bahwa semua string harus membentuk bilangan bulat desimal yang dapat dibagi oleh 13.
Kita dapat menggunakan tata bahasa di atas untuk menguji apakah suatu string termasuk dalam bahasa kita.
Aturan tata bahasa mengandung simbol terminal (yang merupakan elemen dalam bahasa) serta simbol non-terminal yang diganti secara rekursif.
Lebih mudah untuk menjelaskan apa yang terjadi dengan sebuah contoh:
Katakanlah misalnya bahwa string yang kami uji adalah 71955.
Selalu ada simbol awal (yang bukan terminal), dalam kasus tata bahasa di atas ini adalah 'S'. Saat ini kami belum membaca karakter apa pun dari string kami:
current pattern symbol read
S ε
Sekarang, kita membaca simbol pertama dalam string kita yaitu '7', kemudian kita mencari aturan dalam tata bahasa yang memiliki salah satu non-terminal dalam pola kita saat ini di sisi kiri '->' dan bahwa memiliki simbol kita di sisi kanan '->'. Untungnya ada satu (S-> 7G), jadi kami mengganti simbol non-terminal dalam pola kami saat ini dengan sisi kanan aturan baru:
current pattern symbol read
7G 7
Sekarang kita memiliki 'G' non-terminal dalam pola kita, dan simbol berikutnya untuk dibaca adalah '1', Jadi kita mencari aturan dalam tata bahasa kita yang dimulai dengan 'G-> 1 ". Kami menemukan ada satu (G-> 1F), jadi kami mengganti non terminal dengan RHS dari aturan baru kami:
current pattern symbol read
71F 1
Terus ulangi proses ini:
Aturan selanjutnya: F-> 9D
current pattern symbol read
719D 9
Aturan selanjutnya: D-> 5F
current pattern symbol read
7195F 5
Aturan selanjutnya: F-> 5S
current pattern symbol read
71955S 5
Pada titik ini kita tidak memiliki lagi simbol dalam string kita, tetapi kita memiliki simbol non-terminal lain di sana. Kita melihat dari aturan pertama dalam tata bahasa bahwa kita dapat mengganti 'S' dengan string kosong (ε): S-> ε
Melakukannya memberi kita derai saat ini: 71955ε yang setara dengan 71955.
Kami telah membaca semua simbol dalam string kami, dan polanya tidak mengandung simbol non-terminal. Yang berarti bahwa string milik bahasa dan oleh karena itu 71955 sebenarnya dapat dibagi oleh 13.
Yaitu tujuannya adalah untuk memiliki pola = string. Jika Anda dibiarkan dengan simbol non-terminal, setelah membaca semua simbol di string Anda, string tersebut tidak termasuk dalam bahasa. Demikian juga, jika Anda masih memiliki lebih banyak simbol dalam string untuk dibaca, tetapi tidak ada aturan dalam tata bahasa yang memungkinkan Anda untuk maju, maka string tersebut bukan milik bahasa.