Laboratoriya ishi №7. Mavzu: Sintaktis tahlil Ishning maqsadi: C++ dasturlash tilida leksik va sintaksis tahlil qilish va uning dasturini yaratish ko’nikmalarini egallsh.
Masalaning qo’yilishi: Matnli faylda berilgan ma’lumotlarni leksik va sintaksis tahlil qilish.
Masala: Matinli faylda “ ; ” (nuqta-vergul) belgisi bilan ajratilgan arifmetik iboralar mavjud. Arifmetik ifodalar: identifikatorlardan, o'nlik suzuvchi nuqta raqamlaridan, o’zlashtirish belgisi ( = ), ishoralar +, -, *, / va figurali qavs({}) lardan iborat.
1) Topshiriqqa muvofiq kirish matnini leksik tahlilini bajaradigan va ularning turlarini ko'rsatgan holda tokenlar jadvalini tuzadigan dastur yozing. Dastur kirish matnida leksik tahlil bosqichida aniqlanishi mumkin bo'lgan xatolar (sintaksis tahlil) mavjudligi to'g'risida xabarlarni chiqarishi kerak;
2) leksik va sintaksis tahlil analizator kodini yaratishda Visual C++ dan kompilyator sifatida foydalaning.
Masalaniyechish g‘oyasi: Oqimlar sinfi (fstream.h) dan foydalanib, matnli fayl ma’lumotlari o’zlashtiriladi. Tokenlar jadvali yaratish uchun birinchi: faylning nechta satr borligi getline(oqi, line ) funksiyasidan foydalanilanib aniqlanadi. Xar bir sat sikl qadamlar bilan sanaladi (i++). O’zlashtirib olingan satr o’zgaruvchi (line) ning xar bir elementi vazifada belgilangan belgilarga tekshiriladi. Izoh: Leksik va sintaksis tahlil masalani to’liq yechish uchun ko’p vaqt sarflanishi inobatga olingan holda xar bir talabaga leksik tahlil bosqichida alohida belgilar ajratiladi. Sintaksis tahlil da esa ushbu aniqlangan belgilar ketma-ketligi tekshiriladi. Agar ketma-ketliklar noto’g’ri joylashgan bo’lsa, ushbu xatolik haqida xabar beruvchi dastur tuzilishi kerak.
Leksik va sintaksis tahlil haqida