Pertanyaan Regular vs Konteks Grammars Gratis


Saya belajar untuk saya bahasa komputasi tes, dan ada satu ide saya mengalami masalah membungkus kepalaku.

saya mengerti itu tata bahasa reguler lebih sederhana dan tidak dapat mengandung ambiguitas, tetapi tidak dapat melakukan banyak tugas yang diperlukan untuk bahasa pemrograman. Saya juga mengerti itu tata bahasa bebas konteks memungkinkan ambiguitas, tetapi memungkinkan untuk beberapa hal yang diperlukan untuk bahasa pemrograman (seperti palindromes).

Yang saya hadapi adalah memahami bagaimana saya bisa mendapatkan semua hal di atas dengan mengetahui hal itu nonderminoral tata bahasa reguler dapat memetakan ke terminal atau nonterminal diikuti oleh terminal atau bahwa peta nonterminal bebas konteks untuk setiap kombinasi terminal dan nonterminals.

Bisakah seseorang membantu saya menggabungkan semua ini?


75
2018-02-18 03:46


asal


Jawaban:


Tata bahasa reguler adalah linear kanan atau kiri, sedangkan tata bahasa bebas konteks pada dasarnya merupakan kombinasi terminal dan non-terminal. Oleh karena itu Anda dapat melihat bahwa tata bahasa reguler adalah bagian dari tata bahasa bebas konteks.

Jadi untuk palindrom misalnya, adalah bentuknya,

S->ABA
A->something
B->something

Anda dapat dengan jelas melihat bahwa palindrom tidak dapat diekspresikan dalam tata bahasa reguler karena itu harus benar atau linier kiri dan dengan demikian tidak dapat memiliki non-terminal di kedua sisi.

Karena tata bahasa reguler tidak ambigu, hanya ada satu aturan produksi untuk non-terminal tertentu, sedangkan ada lebih dari satu dalam kasus tata bahasa bebas konteks.


58
2018-02-18 05:35



Saya pikir apa yang Anda ingin pikirkan adalah berbagai lemmata yang memompa. Bahasa biasa dapat dikenali oleh robot yang terbatas. Sebuah bahasa bebas konteks membutuhkan setumpuk, dan bahasa yang sensitif konteks membutuhkan dua tumpuk (yang setara dengan mengatakan itu memerlukan mesin Turing penuh.)

Jadi, jika kita memikirkan tentang memompa lemma untuk bahasa biasa, apa yang dikatakannya, pada dasarnya, adalah bahwa bahasa biasa dapat dipecah menjadi tiga bagian, x, y, dan z, di mana semua contoh bahasa berada xy * z (di mana * adalah pengulangan Kleene, yaitu, 0 atau lebih salinan y.) Pada dasarnya Anda memiliki satu "non-fisik" yang dapat diperluas.

Sekarang, bagaimana dengan bahasa bebas konteks? Ada yang analog memompa lemma untuk bahasa bebas konteks yang memecah string dalam bahasa menjadi lima bagian, uvxyz, dan di mana semua contoh bahasa berada uvsayaxysayaz, untuk saya ≥ 0. Sekarang, Anda punya dua "nonterminals" yang dapat direplikasi, atau dipompa, selama kamu memiliki nomor yang sama.


50
2018-02-18 05:36



Perbedaan antara tata bahasa bebas reguler dan konteks: (N, Σ, P, S): terminal, nonterminals, produksi, mulai simbol Terminal negara

● simbol dasar bahasa yang ditentukan oleh tata bahasa formal

● abc

Nonterminal simbol (atau variabel sintaksis)

● digantikan oleh kelompok simbol terminal sesuai dengan aturan produksi

● ABC

tata bahasa reguler: tata bahasa reguler kanan atau kiri tata bahasa reguler yang benar, semua aturan mematuhi formulir

  1. B → di mana B adalah nonterminal dalam N dan a adalah terminal di Σ
  2. B → aC di mana B dan C berada dalam N dan a berada di Σ
  3. B → ε di mana B berada dalam N dan ε menunjukkan string kosong, yaitu string panjang 0

meninggalkan tata bahasa reguler, semua aturan mematuhi formulir

  1. A → a dimana A adalah nonterminal dalam N dan a adalah terminal di Σ
  2. A → Ba di mana A dan B berada di N dan a berada di Σ
  3. A → ε di mana A berada dalam N dan ε adalah string kosong

context free grammar (CFG)

○ tata bahasa formal di mana setiap aturan produksi berbentuk V → w

○ V adalah simbol tunggal non-fisik

○ w adalah string terminal dan / atau nonterminals (w bisa kosong)


8
2018-05-13 19:29



Ekspresi Reguler

  • Dasar analisis leksikal
  • Mewakili bahasa reguler

Konteks Grammar Gratis

  • Dasar parsing
  • Mewakili konstruksi bahasa

enter image description here


4
2018-01-16 05:07



Tata bahasa bebas konteks jika semua aturan produksi memiliki bentuk: A (yaitu, sisi kiri aturan hanya dapat menjadi variabel tunggal; sisi kanan tidak dibatasi dan dapat berupa urutan terminal dan variabel). Kita dapat mendefinisikan tata bahasa sebagai 4-tupel di mana V adalah himpunan terbatas (variabel), _ adalah himpunan terbatas (terminal), S adalah variabel awal, dan R adalah himpunan aturan terbatas, masing-masing adalah pemetaan V
tata bahasa reguler adalah linear kanan atau kiri, sedangkan tata bahasa bebas konteks pada dasarnya merupakan kombinasi dari terminal dan non-terminal. maka kita dapat mengatakan bahwa tata bahasa reguler adalah bagian dari tata bahasa bebas konteks. Setelah properti ini kita dapat mengatakan bahwa pengaturan Konteks Bahasa Bebas juga berisi rangkaian Bahasa Reguler


3
2018-06-30 15:28



Tata bahasa reguler: - grammar yang mengandung produksi sebagai berikut adalah RG:

V->TV or VT
V->T

di mana V = variabel dan T = terminal

RG mungkin Left Linear Grammar atau Right Liner Grammar, tetapi tidak Middle linear Grammar.

Seperti yang kita tahu semua RG adalah Linear Grammar tetapi hanya Left Linear atau Right Linear Grammar adalah RG.

Tata bahasa reguler bisa ambigu.

S->aA|aB
A->a
B->a

Tata Bahasa Ambigu: - untuk string x mereka ada lebih dari satu LMD atau Lebih dari RMD atau Lebih dari satu pohon Parse atau Satu LMD dan Satu RMD tetapi keduanya Menghasilkan pohon Parse yang berbeda.

                S                   S

              /   \               /   \
             a     A             a     B
                    \                   \
                     a                   a

Grammar ini adalah ambigu Grammar karena dua parse tree.

CFG: -  Tata bahasa dikatakan CFG jika Produksi dalam bentuk:

   V->@   where @ belongs to (V+T)*

DCFL:- seperti yang kita tahu semua DCFL adalah LL (1) Grammar dan semua LL (1) adalah LR (1) sehingga tidak pernah menjadi ambigu. jadi DCFG Tidak pernah ambigu.

Kami juga tahu semua RL adalah DCFL sehingga RL tidak pernah ambigu. Perhatikan bahwa RG mungkin ambigu tetapi RL tidak.

CFL: CFl Mungkin atau mungkin tidak ambigu.

catatan: RL tidak pernah secara inheren ambigu.


3
2017-07-26 20:07



Pada dasarnya tata bahasa reguler adalah bagian dari tata bahasa bebas konteks, tetapi kita tidak bisa mengatakan Setiap konteks tata bahasa bebas adalah tata bahasa reguler. Terutama grammar bebas konteks yang ambigu dan tata bahasa reguler mungkin ambigu.


-1
2018-03-03 14:51