LL grammatikasi - LL grammar

The C grammatika[1] LL emas (1): pastki qismida nishonlarni hazm qilgan tahlilchi ko'rsatilgan "int v; main () {"va noaniq natijalarni olish uchun qoidalarni tanlash haqida"Stmt". Faqat birinchi qarashli belgiga qarab"v", ikkala alternativaning qaysi biri uchun qaror qabul qila olmaydi"Stmt"tanlash uchun, chunki ikkita kiritishni davom ettirish mumkin. Ikkinchi qarash belgisiga (sariq fonga) qarab ularni kamsitish mumkin.

Yilda rasmiy til nazariyasi, an LL grammatikasi a kontekstsiz grammatika bo'lishi mumkin tahlil qilingan tomonidan LL tahlilchisi, bu kirishni tahlil qiladi Leftdan o'ngga va a ni tuzadi Leftmost derivatsiya jumla (shu sababli LL, bilan solishtirganda LR tahlilchisi o'ng tomondagi derivativni tuzadigan). LL grammatikasiga ega bo'lgan til an sifatida tanilgan LL tili. Ushbu shaklning pastki to'plamlari aniqlanadigan kontekstsiz grammatikalar (DCFGs) va kontekstsiz deterministik tillar (DCFL) navbati bilan. Ulardan biri ushbu grammatika yoki til "bu LL grammatikasi / tili" yoki shunchaki "bu LL" ekanligini, bu sinfda ekanligini bildiradi.

LL tahlilchilari LR tahlilchilariga o'xshash stolga asoslangan tahlilchilardir. LL grammatikalari muqobil ravishda a tomonidan tahlil qilinishi mumkin bo'lgan belgilar sifatida tavsiflanishi mumkin bashorat qiluvchi tahlilchi - a rekursiv tushish tahlilchisi holda orqaga qaytish - va ularni osongina qo'l bilan yozish mumkin. Ushbu maqola LL grammatikalarining rasmiy xususiyatlari haqida; tahlil qilish uchun qarang LL tahlilchisi yoki rekursiv tushish tahlilchisi.

Rasmiy ta'rif

Yakuniy holat

Natural son berilgan , a kontekstsiz grammatika bu LL (k) grammatikasi agar

  • har bir terminal belgisi satri uchun uzunligi gacha belgilar,
  • har bir noaniq belgi uchun va
  • har bir terminal belgisi satri uchun ,

eng ko'p bitta ishlab chiqarish qoidasi mavjud Shunday qilib, ba'zi bir terminal belgilar satrlari uchun ,

  • ip boshlash belgisidan kelib chiqishi mumkin ,
  • dan olinishi mumkin birinchi qoidani qo'llaganidan keyin va
  • birinchi ning ramzlari va of rozi bo'ling.[2]

Muqobil, ammo unga teng keladigan rasmiy ta'rif quyidagicha: bu LL (k) grammatikasi agar, o'zboshimchalik bilan hosilalar uchun

qachon birinchi ning ramzlari ular bilan rozi , keyin .[3][4]

Norasmiy ravishda, agar ajralishchi olingan bo'lsa , bilan uning chap tomonidagi nonterminal va allaqachon kirishdan iste'mol qilingan, keyin unga qarab va keyingisiga qarash belgilar joriy kirishni tahlil qiluvchi aniq ishlab chiqarish qoidasini aniqlay oladi uchun .

Qoidalarni identifikatsiyalash, hatto o'tgan ma'lumotni hisobga olmaganda ham mumkin , keyin grammatika a deb nomlanadi kuchli LL (k) grammatikasi.[5] Kuchli LL ning rasmiy ta'rifida (k) uchun grammatika, uchun universal miqdor chiqarib tashlangan va uchun "ba'zi uchun" miqdoriga qo'shiladi .Har bir LL uchun (k) grammatika, tizimli ravishda teng kuchli LL (k) grammatika tuzilishi mumkin.[6]

LL klassi (k) tillar to'plamlarning qat'iy ravishda ko'payib boradigan ketma-ketligini hosil qiladi: LL (0) ⊊ LL (1) ⊊ LL (2) ⊊….[7] Berilgan grammatika yoki yo'qligini hal qilish mumkin G bu LL (k), lekin o'zboshimchalik bilan grammatikaning LL bo'lishi aniqlanmaydi (k) ba'zi uchun k. Agar berilgan LR (k) grammatika ham LL (m) ba'zilar uchun grammatika m.[8]

Har bir LL (k) grammatika ham LR (k) grammatika. An ε- bepul LL (1) grammatikasi ham SLR (1) grammatikasidir. Bo'sh va bo'sh bo'lmagan hosilalarga ega bo'lgan belgilar bilan LL (1) grammatikasi ham LALR (1) grammatikasidir. Faqatgina bo'sh hosilaga ega bo'lgan belgilar bilan LL (1) grammatikasi LALR (1) bo'lishi mumkin yoki bo'lmasligi mumkin.[9]

LL grammatikalarida qoidalar bo'lishi mumkin emas chap rekursiya.[10] Har bir LL (kε -siz grammatika ekvivalent LL ga aylantirilishi mumkin (k) grammatika Greibax normal shakli (ta'rifi bo'yicha chap rekursiya qoidalari yo'q).[11].

Muntazam ish

Ruxsat bering terminal alifbosi bo'ling. Ichki qism a muntazam to'plam agar u bo'lsa oddiy til ustida . A bo'lim ning deyiladi a muntazam bo'lim agar har biri uchun bo'lsa to'plam muntazamdir.

Ruxsat bering kontekstsiz grammatika bo'ling va ruxsat bering ning muntazam bo'limi bo'ling . Biz buni aytamiz bu LL () grammatika agar, o'zboshimchalik bilan hosilalar uchun

shu kabi bundan kelib chiqadiki . [12]

Grammatika G ning muntazam bo'limi mavjud bo'lsa, LL-muntazam (LLR) deb aytiladi shu kabi G bu LL ().

LLR grammatikalari shubhasiz va chap-rekursiv emas.

Har bir LL (k) grammatika LLR. Har bir LL (k) grammatikasi deterministik, ammo deterministik bo'lmagan LLR grammatikasi mavjud.[13] Shuning uchun LLR grammatika klassi LL ning birlashmasidan qat'iyan katta (k) har biriga k.

Muntazam bo'linishni hisobga olgan holda, qaror qabul qilinadi , berilgan grammatika LL (). Biroq, o'zboshimchalik bilan grammatika yoki yo'qligini hal qilish mumkin emas G LLR hisoblanadi. Bu grammatika to'g'risida qaror qabul qilish bilan bog'liq G uchun odatiy til topishishi kerak bo'lgan oddiy tilni yaratadi G, ga kamaytirilishi mumkin Xat yozish muammosi.

Har bir LLR grammatikasi LR-odatiy (LRR, LR uchun mos keladigan ekvivalent (k), ammo LLR bo'lmagan LR (1) grammatikasi mavjud.[14]

Tarixiy jihatdan LLR grammatikalari LRR grammatikalari ixtiro qilinganidan keyin. Muntazam bo'lim berilgan a Mur mashinasi muntazam ishlab chiqarish holatlarini aniqlab, tahlilni o'ngdan chapga o'tkazish uchun qurilishi mumkin. Amalga oshirilgandan so'ng, LL (1) analizatori uzatilgan kirishni chiziqli vaqt ichida boshqarish uchun etarli bo'ladi. Shunday qilib, LLR tahlilchilari LL dan kattaroq grammatikalar sinfini boshqarishi mumkin (k) bir xil darajada samarali bo'lishiga qaramasdan, LLR nazariyasi katta dasturlarga ega emas. Mumkin va juda ishonchli sabablardan biri shundaki, LL uchun generativ algoritmlar mavjud (k) va LR (k), agar doimiy ravishda oldingi qismni qurmagan bo'lsa, LLR / LRR ajralish moslamasini yaratish muammosi hal qilinmaydi. Ammo grammatikaga mos keladigan muntazam bo'limni yaratish muammosi ham hal qilinmaydi.

Oddiy deterministik tillar

Kontekstsiz grammatika deyiladi oddiy deterministik,[15] yoki shunchaki oddiy,[16] agar

  • u ichida Greibax normal shakli (ya'ni har bir qoida shakliga ega ) va
  • bir xil bo'lmagan uchun turli xil o'ng tomonlar har doim har xil terminallardan boshlang .

Iplar to'plami oddiy deterministik grammatikaga ega bo'lsa, oddiy deterministik yoki oddiygina til deb ataladi.

Greybax normal shaklida grammsiz LL (1) grammatikasiga ega bo'lgan tillar sinfi oddiy deterministik tillar sinfiga teng.[17]Ushbu til sinfi tarkibida ε bo'lmagan oddiy to'plamlar mavjud.[16] Ekvivalentlik bu uchun hal qilinadi, ammo inklyuziya emas.[15]

Ilovalar

LL grammatikalari, xususan, LL (1) grammatikalari juda katta amaliy qiziqish uyg'otadi, chunki ularni LL tahlilchilari yoki rekursiv nasl-nasabli tahlilchilar tomonidan tahlil qilish oson va ko'p kompyuter tillari[oydinlashtirish ] shu sababli LL (1) ga mo'ljallangan. Yuqori qiymatiga ega grammatikalarga asoslangan tillar k an'anaviy ravishda ko'rib chiqilgan[iqtibos kerak ] tahlil qilish qiyin bo'lishiga qaramay, hozirda bu mavjudlik va keng foydalanish sharoitida unchalik to'g'ri emas[iqtibos kerak ] LLni qo'llab-quvvatlovchi ajratuvchi generatorlark) o'zboshimchalik uchun grammatikalar k.

Shuningdek qarang

Izohlar

  1. ^ Kernighan & Ritchie 1988 yil, A.13-ilova "Grammatika", p.193 ff. Rasmning yuqori qismida an-dagi soddalashtirilgan ko'chirma ko'rsatilgan EBNF o'xshash yozuvlar ..
  2. ^ Rosenkrantz va Stearns (1970), p. 227). Def.1. Mualliflar ishni ko'rib chiqmaydilar k=0.
  3. ^ qayerda ""hosil qilishni chap tomondagi hosilalar bilan belgilaydi va , va
  4. ^ Waite & Goos (1984), p. 123) 5.22
  5. ^ Rosenkrantz va Stearns (1970), p. 235) Def.2
  6. ^ Rosenkrantz va Stearns (1970), p. 235) teorema
  7. ^ Rosenkrantz va Stearns (1970), p. 246-247): "dan foydalanish"yoki" ni belgilash uchun, qatorlar to'plami bor , lekin ε-bepul grammatika, har biri uchun .
  8. ^ Rosenkrantz va Stearns (1970), 254-255 betlar)
  9. ^ Bitti (1982)
  10. ^ Rosenkrantz va Stearns (1970), 241-bet) Lemma 5
  11. ^ Rosenkrantz va Stearns (1970), p. 242) teorema
  12. ^ Poplavski, Devid (1977). "LL-oddiy tillarning xususiyatlari". Purdue universiteti. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  13. ^ Devid A. Poplawski (1977 yil avgust). LL-oddiy tillarning xususiyatlari (Texnik hisobot). Purdue universiteti, Kompyuter fanlari bo'limi.
  14. ^ Devid A. Poplawski (1977 yil avgust). LL-oddiy tillarning xususiyatlari (Texnik hisobot). Purdue universiteti, Kompyuter fanlari bo'limi.
  15. ^ a b Korenjak va Xopkroft (1966)
  16. ^ a b Hopcroft & Ullman (1979 yil), p. 229) 9.3-mashq
  17. ^ Rosenkrantz va Stearns (1970), p. 243)

Manbalar

Qo'shimcha o'qish

  • Sippu, Seppo; Soisalon-Soininen, Eljas (1990). Ajralish nazariyasi: LR (k) va LL (k) ajralish. Springer Science & Business Media. ISBN  978-3-540-51732-0.