Yuqoridan pastga qarab tahlil qilish - Top-down parsing

Yuqoridan pastga qarab tahlil qilish yilda Kompyuter fanlari a tahlil qilish birinchi bo'lib eng yuqori darajaga qaraydigan strategiya daraxtni tahlil qilish va a-ni qayta yozish qoidalaridan foydalangan holda tahlil daraxtida ishlaydi rasmiy grammatika.[1] LL tahlilchilari yuqoridan pastga qarab tahlil qilish strategiyasidan foydalanadigan tahlilchi turi.

Yuqoridan pastga qarab tahlil qilish - umumiy gipoteza bilan ma'lumotlar noma'lum munosabatlarni tahlil qilish strategiyasi daraxtni tahlil qilish tuzilmalar va keyinchalik ma'lum bo'lgan asosiy tuzilmalar gipotezaga mos keladimi-yo'qligini ko'rib chiqish. Bu ikkala tabiiyni tahlil qilishda yuzaga keladi tillar va kompyuter tillari.

Yuqoridan pastga qarab tahlil qilish topishga urinish sifatida qaralishi mumkin eng chap hosilalar qidirish orqali kirish-oqimning daraxtlar berilganning yuqoridan pastga kengayishidan foydalangan holda rasmiy grammatika qoidalar. Inklyuziv tanlov joylashtirish uchun ishlatiladi noaniqlik grammatik qoidalarning barcha muqobil o'ng tomonlarini kengaytirish orqali.[2]

Yuqoridan pastga tahlil qilishning oddiy dasturlari tugamaydi chap-rekursiv grammatika va orqaga qaytish bilan yuqoridan pastga qarab tahlil qilish mumkin eksponent vaqt noaniqlik uchun kirish uzunligiga nisbatan murakkablik CFGlar.[3] Biroq, Frost, Hofiz va Kallagan tomonidan yuqoridan pastga qarab yanada murakkab tahlilchilar yaratilgan[4][5] nima qiladi noaniqlik va chap rekursiyani qondirish yilda polinom vaqti va ajraladigan daraxtlarning potentsial eksponensial sonining polinom kattaligidagi tasavvurlarini yaratadigan.

Dasturlash tilini qo'llash

A kompilyator kiruvchi belgilarni moslashtirish orqali dasturlash tilidan ichki vakolatxonaga kiritishni ajraladi ishlab chiqarish qoidalari. Odatda ishlab chiqarish qoidalari aniqlanadi Backus-Naur shakli. An LL tahlilchisi har bir ishlab chiqarish qoidasini keladigan belgilarga qo'llash orqali yuqoridan pastga qarab tahlil qilishni amalga oshiradigan, ishlab chiqarish qoidasida hosil bo'lgan eng chap belgidan ishlagan va keyin duch kelgan har bir terminal bo'lmagan belgi uchun keyingi ishlab chiqarish qoidasiga o'tadigan ajraluvchi turi. Shu tarzda, tahlil qilish ishlab chiqarish qoidasining chap tomonida (o'ng tomonda) boshlanadi va birinchi navbatda chapdan terminal bo'lmaganlarni baholaydi va shuning uchun keyingi bosqichga o'tmasdan oldin har bir yangi bo'lmagan terminal uchun tahlil daraxti pastga tushadi. ishlab chiqarish qoidasi belgisi.

Masalan:

uning satri A = acdf bo'ladi

mos keladi va mos kelishga harakat qiling Keyingisi. Keyin sud qilingan bo'lardi. Kutilganidek, ba'zi tillar boshqalarga qaraganda noaniq. Terminal bo'lmagan barcha ishlab chiqarishlar alohida satrlarni ishlab chiqaradigan noaniq til uchun: bitta ishlab chiqarish tomonidan ishlab chiqarilgan mag'lubiyat boshqa ishlab chiqarish tomonidan yaratilgan sim bilan bir xil belgidan boshlamaydi. Aniq bo'lmagan tilni LL (1) grammatikasi bilan tahlil qilish mumkin, bu erda (1) ajratuvchi birdan oldin bitta belgini o'qishini bildiradi. Ikki noma'lum tilni LL tahlilchisi tomonidan tahlil qilinishi uchun, ajraluvchi 1 tadan ortiq belgini ko'rishi kerak, masalan. LL (3).

Ushbu muammoning umumiy echimi LR tahlilchisi, bu turi smenani qisqartirish va qiladi pastdan yuqoriga qarab tahlil qilish.

Yuqoridan pastga qarab tahlil qilishda chap rekursiyani joylashtirish

A rasmiy grammatika o'z ichiga oladi chap rekursiya bo'lishi mumkin emas tahlil qilingan soddalik bilan rekursiv tushish tahlilchisi agar ular zaif ekvivalent o'ng-rekursiv shaklga aylantirilmasa. Ammo yaqinda o'tkazilgan tadqiqotlar shuni ko'rsatadiki, chap-rekursiv grammatikalarni (boshqa barcha umumiy shakllar bilan bir qatorda) joylashtirish mumkin CFGlar ) qisqartirishni qo'llash orqali yuqoridan pastga qarab murakkabroq tahlilchida. A tan olish mos keladigan algoritm noaniq grammatikalar va kirish uzunligiga va joriy kirish pozitsiyasiga nisbatan chuqurlik cheklovlarini qo'yish orqali tobora o'sib boruvchi to'g'ridan-to'g'ri rekursiv qismni qisqartiradi, Frost va Hofiz tomonidan 2006 yilda tasvirlangan.[6] Ushbu algoritm to'liq kengaytirildi tahlil qilish bilvosita (ilgari hisoblangan kontekstni hozirgi kontekst bilan taqqoslash orqali) va to'g'ridan-to'g'ri chap rekursiyani joylashtirish algoritmi polinom vaqt va 2007 yilda Frost, Hofiz va Kallaghan tomonidan juda noaniq grammatikalar uchun ajratish daraxtlarining potentsial eksponensial sonining ixcham polinom o'lchamlarini yaratish.[4] Algoritm shu vaqtdan beri to'plam sifatida amalga oshirildi ajralish kombinatorlari da yozilgan Xaskell dasturlash tili. Ushbu yangi kombinatorlar to'plamini amalga oshirish tafsilotlarini qog'ozdan topish mumkin[5] PADL'08 da taqdim etilgan mualliflar tomonidan X-SAIGA sayt algoritmlari va amalga oshirish tafsilotlari haqida ko'proq ma'lumotga ega.

Yuqoridan pastga qarab tahlil qilishning vaqt va makon murakkabligi

Yuqoridan pastga qarab tahlil qiluvchi noaniq CFG-ga nisbatan noaniq kirishni tahlil qilishga harakat qilganda, barcha mumkin bo'lgan ajralish daraxtlarini ishlab chiqarish uchun CFG-ning barcha alternativalarini sinab ko'rish uchun eksponent sonlar (kirish uzunligiga nisbatan) kerak bo'lishi mumkin. , bu oxir-oqibat eksponentli xotira maydonini talab qiladi. O'zaro rekursiv funktsiyalar to'plami sifatida qurilgan yuqoridan pastga qarab ajratgichlarda eksponent vaqt murakkabligi muammosi hal qilindi Norvig 1991 yilda.[7] Uning texnikasi dinamik dasturlash va holatlar to'plamlarini ishlatishga o'xshaydi Earley algoritmi (1970) va jadvallar CYK algoritmi Cocke, Younger va Kasami.

Asosiy g'oya - ajralishni qo'llash natijalarini saqlash p holatida j bir xil vaziyat yuzaga kelganda, esda qolarli va qayta ishlatish natijalari. Frost, Hofiz va Kallagan[4][5] shuningdek foydalaning yod olish har qanday CFG formatini joylashtirish uchun ortiqcha hisob-kitoblarni rad etish uchun polinom vaqt (Θ (n4) chap-rekursiv grammatikalar uchun va Θ (n3) chap-rekursiv bo'lmagan grammatikalar uchun). Ularning yuqoridan pastga qarab tahlil qilish algoritmi, shuningdek, "ixcham vakillik" va "mahalliy noaniqliklarni guruhlash" bo'yicha potentsial eksponentli noaniq tahlil qilish daraxtlari uchun polinom bo'shliqni talab qiladi. Ularning ixcham namoyishi bilan solishtirish mumkin Tomita ning ixcham namoyishi pastdan yuqoriga qarab tahlil qilish.[8]

Grammatikalarning yana bir vakili bo'lgan PEG-lardan foydalangan holda paketli tahlilchilar nafis va kuchli tahlil algoritmini taqdim etadi. Qarang Ekspression grammatikasini tahlil qilish.

Misollar

Yuqoridan pastga ajralishni ishlatadigan ba'zi bir tahlilchilarga quyidagilar kiradi:

Shuningdek qarang

Adabiyotlar

  1. ^ Dik Grune; Ceriel J.H. Jeykobs (2007 yil 29 oktyabr). Tekshirish usullari: amaliy qo'llanma. Springer Science & Business Media. ISBN  978-0-387-68954-8.
  2. ^ Aho, Alfred V.; Seti, Ravi; Ullman, Jeffri D. (1986). Tuzuvchilar, printsiplar, metodlar va vositalar (Tuzatishlar bilan tahrir. Tahr.). Addison-Uesli Pub. Co. ISBN  978-0201100884.
  3. ^ Aho, Alfred V.; Ullman, Jeffri D. (1972). Tahlil, tarjima va kompilyatsiya nazariyasi (1-jild: tahlil qilish). (Repr. Tahr.). Englewood Cliffs, NJ: Prentice-Hall. ISBN  978-0139145568.
  4. ^ a b v Frost, R., Hofiz, R. va Kallagan, P. (2007) " Ikki tomonlama chap-rekursiv grammatikalar uchun yuqoridan pastga modulli va samarali tahlil qilish ." Ayrilish texnologiyalari bo'yicha 10-Xalqaro seminar (IWPT), ACL-SIGPARSE , Sahifalar: 109 - 120, 2007 yil iyun, Praga.
  5. ^ a b v Frost, R., Hofiz, R. va Kallagan, P. (2008) " Aniq bo'lmagan chap-rekursiv grammatikalar uchun tahlil qiluvchi kombinatorlar." Deklarativ tillarning amaliy jihatlari bo'yicha 10-Xalqaro simpozium (PADL), ACM-SIGPLAN , Jild 4902/2008, Sahifalar: 167-181, yanvar, 2008 yil, San-Frantsisko.
  6. ^ Frost, R. va Hofiz, R. (2006) " Polinom vaqtidagi noaniqlik va chap rekursiyani joylashtirish uchun yangi yuqoridan pastga qarab tahlil algoritmi." ACM SIGPLAN xabarnomalari, 41-jild 5-son, Sahifalar: 46-54.
  7. ^ Norvig, P. (1991) "Kontekstsiz tahlil qilish uchun ilovalar bilan avtomatik eslab qolish usullari.” Jurnal - hisoblash lingvistikasi 17-jild, 1-son, Sahifalar: 91 - 98.
  8. ^ Tomita, M. (1985) "Tabiiy til uchun samarali tahlil.” Klyuver, Boston, MA.
  9. ^ Pereyra, Fernando CN va Devid HD Uorren. "Tilni tahlil qilish uchun aniq grammatikalar - rasmiyatchilikni o'rganish va kengaytirilgan o'tish tarmoqlari bilan taqqoslash. "Sun'iy intellekt 13.3 (1980): 231-278.

Tashqi havolalar

  • X-SAIGA - GrAmmarsning aniq bajariladigan xususiyatlari