• Kalit so`zlar: Sintaksis, tug’iluvchi qoidalardir, Semantika, Alfavit, aksioma, ekvivalent grammatika.
  • Ma’ruza №11. Mavzu: Sintaksis va semantik tahlil. Kodni generatsiya qilishga tayorgarlik. Reja




    Download 29.29 Kb.
    Sana26.03.2024
    Hajmi29.29 Kb.
    #178189
    Bog'liq
    Ma\'ruza 11
    17-ЭТИКА-merged

    Ma’ruza № 11. Mavzu: Sintaksis va semantik tahlil. Kodni generatsiya qilishga tayorgarlik.


    Reja:



    1. Til ta’rifi. Sintaksis va semantika.

    2. Bekus-Naur formasi.

    Kalit so`zlar: Sintaksis, tug’iluvchi qoidalardir, Semantika, Alfavit, aksioma, ekvivalent grammatika.

    Tilshunoslik va informatika bo'yicha ajralish (yoki ajralib chiqish, ajralib chiqish) tabiiy yoki rasmiy tilning leksemalarning (so'zlar, tokens) chiziqli ketma-ketligini rasmiy grammatikaga solishtirish jarayonidir. Natijada, odatda, parse daraxti (sintaksis daraxti) odatda leksik tahlil bilan birgalikda ishlatiladi.


    Sintaktik tahlilchi (inglizcha “Parser” – Grammatik tahlilchi) - bu dastur yoki uning qismini ajratuvchi dastur.

    O'zining strukturasini chiziqdan daraxtga aylantirish bilan ifodani ajratish misoli.
    Tahlil qilinayotganda, manba matni ma'lumotlar seksiyasiga aylantiriladi, odatda kirish sekansining sintaktik strukturasini aks ettiruvchi va keyinchalik qayta ishlash uchun juda mos keladi.
    Odatda, sintaktik tahlil natijasi jumlaning sintaksik strukturasi yoki qaramlik daraxti yoki komponent daraxti yoki birinchi va ikkinchi taqdimot usullarining kombinatsiyasi sifatida namoyon bo'ladi.
    "Sintaksis"ga ega bo'lgan har qanday narsa avtomatik tarzda tahlil qilinadi.
    • dasturlash tillari - dasturlash tillarining dastlabki kodini tarjima qilish (tarjima qilish yoki talqin qilish) paytida;
    • Strukturalangan ma'lumotlar - ma'lumotlar, tavsiflar, dizaynlar va hokazo. Masalan: XML, HTML, CSS, JSON, ini-fayllar, maxsus konfiguratsion fayllar va h.k .;
    • qidiruv tizimida indeks yaratish;
    • SQL-so'rovlar (DSL-tili);
    Matematik ifodalar;
    • muntazam ifodalar (bu o'z navbatida leksik tahlilni avtomatlashtirish uchun ishlatilishi mumkin);
    rasmiy grammatika;
    Tilshunoslik - tabiiy tillar. Masalan: kompyuter tarjimasi va boshqa matn generatorlari.
    • Yuqoridan pastga ajratuvchi - grammatikaning chiqishi boshlang'ich belgidan kerakli ketma-ketlikgacha ketma-ket kengaytiriladi.
    • Retseptiv tushish usuli
    • LL-analizator
    • Ortga ajratuvchi (ingliz. “bottom-up parser”) - mahsulotlarni o'ng qismlardan tiklash, tokenlardan boshlab va boshlash belgisi bilan tugaydi.
    • LR-analizator
    • GLR parser
    Noto'g'ri kirish token zanjiriga javob berishning eng oddiy usuli - bu ajratishni yakunlash va xato xabari chiqarish. Shu bilan birga, tahlil qilishning bir urinishida imkon qadar ko'p xatolarni topish juda foydalidir. Eng keng tarqalgan dasturlash tillarining tarjimonlari shunday yo'l tutishadi.
    Shunday qilib, qayta ishlovchilar xato qilishidan oldin, quyidagi vazifalar amalga oshiriladi:
    • xatolar borligi haqida aniq va aniq xabar berish kerak;
    • boshqa xatoliklarni qidirishni davom ettirish uchun xatodan so'ng tezkor tiklanishni ta'minlashi kerak;
    • To'g'ri kirish zanjirining ishlashini sezilarli darajada pasaytirmaslik kerak.
    Eng yaxshi ma'lum bo'lgan xatolarni tiklash bo'yicha strategiyalar quyida keltirilgan.
    Xatolik aniqlansa, maxsus belgilangan sinxronlashtirish belgilar majmui topilmaguncha, kirishni birma-bir o'chirib tashlaydi. Odatda bunday lexemlar chegarachilar, masalan:) yoki}. Sinxronlash belgilar to'plami tahlil qilinadigan tilni ishlab chiquvchi tomonidan belgilanishi kerak. Ushbu tiklash strategiyasi yordamida qo'shimcha xatoliklarni tekshirmasdan, juda ko'p sonli belgilar o'tkazib yuborilishi mumkin. Ushbu tiklash strategiyasi amalga oshirishning eng oson yo'li.
    Ba'zan, xato aniqlanganda, ajralmas elementi kirish oqimining mahalliy tuzilishini bajarishi mumkin, shunday qilib u ishlashni davom ettirishga imkon beradi. Tabiiyki, agar ushbu xato haqiqiy xato, ayrıştırıcı tomonidan xato topib olish nuqtasi oldida sodir bo'lsa, bu kuchsizdir.
    Xato ishlab chiqarish
    Eng keng tarqalgan xatolar haqida bilish tilning grammatikasini noto'g'ri konstruksiyani ishlab chiqaradigan mahsulotlar bilan kengaytirish imkonini beradi. Bunday mahsulotlar ishga tushirilganda, xato ro'yhatga olinadi, ammo ajraluvchi normal ishlaydi.
    Analyzerni ishlab chiqish vositalari tahrir
    Tahlilchilarni rivojlantirish bo'yicha eng mashhur vositalardan ba'zilari [1]:
    • ANTLR - parser ishlab chiqaruvchi
    • Bison - parser ishlab chiqaruvchi
    • Coco / R - brauzer va parser generatori
    • Gold - parser
    JavaCS - Java til uchun parser generatori
    • Limon Parser - parser generatori
    • Lex - Scanner Generator
    • Ragel - o'rnatilgan parser generatori
    • Spirit Parser Framework - parser generatori
    • SYNTAX
    • sintaksisi ta'rifi Formalizm
    • UltraGram
    • VivaCore
    • Yacc - parser ishlab chiqaruvchi
    Semantik tahlil
    Semantika va semantik tahlilning xususiyatlari
    Dastur matnini tahlil qilishda keyingi qadam semantik bo'lib, avvalgi ikki qismdan, leksik va sintaktikadan farq qiladi. Va semantik tahlil fazasi rasmiy emas, balki mazmunli usullar yordamida amalga oshiriladi (ya'ni hozirgi paytda universal matematik modellar va dasturning ma'nosini tasvirlashning rasmiy vositasi yo'q). Lug'at va sintaktik tahlil tizimli, ya'ni, Tilning tashqi, matnli tuzilmalari. Semantika, ammo mazmunli talqin qilishga qaratilgan bo'lib, dasturda tasvirlangan narsalarning "ma'nosi"ning ichki vakolati bilan bog'liq. Amaliy dasturlash tajribasi bo'lgan har bir kishi uchun, rasmiy til tuzilmalari dastur bilan bog'liq bo'lgan ichki obyektlardagi xossa va harakatlarini tasvirlaydi. Birinchidan, ularning barchasiga tegib turgan va yuzasiga yotadigan narsalarni sanab qo'yamiz:
    • ko'pchilik obyektlar nomlanadi. Obyektning nomi uni aniqlashga imkon beradi, turli nomlar mavjud, nomlangan konvensiyalar, turli xil standartlar va hokazolar. Bularning barchasi semantika uchun amal qiladi;
    • Turli xil dasturlash tillarida turlar, murakkabliklar va obyekt xususiyatlarining majmui turli xil dasturlash tillarida farqlanadi va tilning amaliy maydoniga (bu yerda dasturlash tillarining semantikasi sintaksis va so'z birikmalaridan ko'ra ko'proq farqlanadi) bog'liq. Masalan: kompyuter arxitekturasiga maksimal yaqinlashishga yo'naltirilgan klassik S, ma'lumotlar turlari, o'zgaruvchilar, vazifalar kabi obyektlar bilan ishlaydi. Ularning barchasi turli xil xususiyat va xususiyatlarga ega. Masalan: o'zgarmaydigan nom, ma'lumot turi, hajmi, muddati, joriy qiymati bilan tavsiflanadi;
    • Obyektlar bog'langan (bir-biriga qarashli). Xuddi shu S da, o'zgaruvchiga tegishli bo'lgan ma'lumot turini tavsiflaydi, keyin olingan ma'lumot turi asosiy ma'lumotlarga va hokazolarni nazarda tutadi. Dasturning ichki ma'nosidagi semantikasi o'zaro bog'liq obyektlar tizimiga o'xshaydi, deb aytish mumkin;
    • Dasturning semantikasi ichki vakili juda semantik jadval deb nomlanmagan. Darhaqiqat, semantika vakolatlariga mos keladigan ma'lumotlar tarkibi har qanday bo'lishi mumkin. "Jadvallar" atamasi har xil turdagi obyektlar mavjudligini ko'rsatadi, ularning har biri alohida stolga ega, lekin turli jadvallar elementlari bir-biriga bog'langanligini unutmasligimiz kerak. Bunday tizimni ta'riflash uchun eng yaqin atama bazadir. Keling, sintaktik faza haqida fikrimiz bor, biz tarjima jarayonini tashkil etishda uning markaziy rolini baholashimiz mumkin. Faqat sintaksis darajasida dasturning matni bitta tizimli butun hisoblanadi - tilning har bir jumlasi bir boshlang'ich Z ning zinapoyasiga qisqartiriladi. Leksik birliklar odatda bir-biridan mustaqil bo'lib, sintaksisning terminal belgilaridir. Dasturning semantikasi tarkibiy yaxlitlikka ega emas va parchalanish bilan taqdim etiladi, ammo u quyidagi sintaksisga taalluqlidir:
    • bir xil semantik obyekt (masalan: o'zgaruvchi) dasturning turli xil, sintaktik ravishda bog'liq bo'lmagan qismlarida paydo bo'lishi mumkin;
    • Sintaktik tuzilmalar ta'riflari va deklaratsiyalari dastur obyektlarining semantikasi manbai bo'lib, ular obyektlarning mavjudligini "da'vo qilish" va ularning xususiyatlarini belgilash;
    Obyektlarda bajariladigan xatti-harakatlar bilan bog'liq sintaktik konstruksiyalar semantika foydalanuvchilari, ularning ma'nosini, to'g'riligi, "ma'nosi" obyektning semantik xususiyatlariga bog'liq. Oldinga qarab, tarjima yakuniy bosqichi (kod ishlab chiqarish, talqin) obyektlarda bajariladigan maxsus semantik harakat deb qarash mumkin;
    • Semantikaning asosiy manbai - leksik tahlil. Belgilarning ba'zilari (masalan: identifikatorlar va sobit) leksema klassi bilan birga (leksik analizning chiqish qismini bildiradi), ya'ni belgisi (ajralish elementining kiritilishida o'sha birlikning nomi) muhimdir. Leksemaning qiymati e'tirof etilgan harflar zanjiri bo'lib, semantik jadvalga tushadigan tokenning semantik qismini ifodalaydi;
    • belgilar yoki kirish satrining terminal belgilar bilan bir xil (ajralish nuqtai nazaridan) semantik jadvallarda ularning semantikasiga murojaat qiling. Kelajakda har bir intermediate nonterminal ham o'z semantikasiga ishora qiladi. Bunday holatda, biron bir qoida, terminalga oid semantikani va o'ng tomonda noan'anaviylikni chap tomonda noan'anaviy semantikaga aylantirib, qoidaga tayinlangan semantik usuli yordamida o'zgartiradi. Shunday qilib, semantik komponentning shakllanishi quyi qismdan sintaktik daraxtga, tepaliklardan - avlodlarga qadar bo'lgan harakat bilan bog'liq.
    • Terminalning semantikasiga va o'ng tomonda noaniq belgilarga asoslangan semantik protsedura natijaning semantikasini hosil qiladi va uni semantik jadvallarga joylashtiradi va uni chap tomonning noan'anaviy ma'lumotiga bog'laydi. Shunday qilib, tarjimonning semantik komponenti ham parchalanadi (grammatika qoidalariga mos semantik tartiblar majmui) va faqat bitta sintaksis daraxti ichida birlashtiriladi.
    Dasturning semantikasi - dasturning o'ziga xos xususiyatlarini, xususiyatlarini va munosabatlarini tavsiflovchi nomlangan moslamalarni to'plashning ichki modeli (ma'lumotlar bazasi).

    Semantik tahlil vazifasi, ya'ni so'zning ma'nosi "sun'iy aql" maydoniga ko'proq mos keladi. Uning rasmiy bo'lmaganligi, masalan: tillarni tasvirlashning rasmiy vositalariga ega emasligini anglatadi. Binobarin, semantik tili model har holda ishlab chiqilgan hech umumiy yondashuv bor, noyob va alohida yechimlari va qator tavsiyalar bor. Shuning uchun tilning semantikasining o'ziga xosligi.
    Eslatma. Tarixan, tarjima semantik bosqichi tavsifidan ko'pincha bunday format (joylashtirish va qidiruv manzili hisoblash), jadvallar bir ikkilik izlash ma'lumotlar tuzilmalari va ularni qayta ishlash va algoritmlari bilan bog'liq qismga tushadi. Aslida, ular asosiy g'oyasi, hech qanday aloqasi bor: dastur obyektlarini ichki vakillik bir necha boshqalar ro’yhatlar, daraxtlar, shaklida amalga oshirilishi mumkin.
    Matnning sintaksisi va semantika o'rtasidagi munosabatlar haqida
    Ma'lumki, xuddi shu sintaksik turli grammalar bilan ifodalanishi mumkin. Biz allaqachon yuqoriga va tushayotgan grammatikaga bo'lgan talablar ham farq qilganini ko'rdik. Sintaksisning bir xil elementlarini qo'llash bo'yicha turli yondashuvlar (takrorlashlar, sintaksikning ixtiyoriy elementlari va boshqalar) ham texnologik jihatdan farqlanadi.
    Shuning uchun, semantik tahlil vazifasi dastur tuzilishi haqida rasmiy ravishda tuzilgan sintaksik daraxtidan ma'lumotlarni olishdir. Va bu har doim noyob tarzda amalga oshiriladi, bu daraxtning qurilishida ishlatiladigan rasmiy grammatikaning har bir qoida ma'nosini aks ettiradi.
    Bundan tashqari, turli qoidalar bo'yicha amalga oshirilgan sintaksik elementlar o'rtasida semantik aloqalar mavjud. Misol uchun, shakl C int a bir o'zgaruvchining turi, b = 5, c bayoni [10] individual o'zgaruvchilar bir davr tavsifi belgilab sintaktik amalga qoidalar, bir guruh, lekin bir keng tarqalgan turi, va natijada ro’yhati alohida qoida bilan belgilanadi. Lekin ular orasida o'zaro bog'liqlik mavjud, bu narsa int ning semantikasi ro’yhatning barcha elementlariga to'g'ri kelishi bilan bog'liq. Demak, semantik uskuna bajarish uchun turli xil variantlar mavjud:
    • Agar bitta qoida bo'yicha sintaksis birligi ishlatilsa, semantik ishlov berish, shuningdek, kod ishlab chiqarish yoki talqin qilish mustaqil semantik protsedura bilan amalga oshirilishi mumkin. Boshqa protseduralar yuqorida sxemasi tomonidan yer bilan o'zaro ta'siri: tartibi belgilar (bu qoida uchun pastki daraxti avlodlari) semantik o'ng tomonida ishoratlar foydalanadi, hosil va chap tomonida (pastki daraxti ildiz tugun) semantikasiga bir murojaat qaytaradi. Ishlab chiqarilgan kodning uzatilishi yoki sharhning natijasi haqida aynan shunday gap bo'lishi mumkin;
    • Agar sintaktik birlik bir nechta qoidalar bilan amalga oshirilsa, bunday mos keluvchi rasm buzilgan. Misol uchun, bu yanada murakkab o'zaro semantik muolajalarni (nafaqat yuqoriga va daraxt pastga, balki qo'shni tugunlari orasidagi, va boshqalar) olishi mumkin. Muolajalar o'rtasida uzatish natijalar uchun semantik jadvallar, balki yanada murakkab ma'lumotlar tuzilmalari yozishni emas, balki faqat mos yozuvlar foydalanish mumkin.
    Download 29.29 Kb.




    Download 29.29 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Ma’ruza №11. Mavzu: Sintaksis va semantik tahlil. Kodni generatsiya qilishga tayorgarlik. Reja

    Download 29.29 Kb.