O’zbekiston


Download 3.06 Mb.
bet1/5
Sana03.12.2023
Hajmi3.06 Mb.
#1806449
  1   2   3   4   5
Bog'liq
BOZOROV OG’ABEK labaratoriya7


O’ZBEKISTON RESPUBLIKASI OLIY VA O’RTA MAXSUS TA’LIM VAZIRLIGI
DENOV TADBIRKORLIK VA PEDAGOGIKA INSTITUTI


TADBIRKORLIK VA BOSHQARUV




FAKULTET


1 bosqich 5KI 2022 guruh talabasi


BOZOROV OG’ABEK NING


DASTURLASH
Fanidan




Bajardi: BOZOROV OG’ABEK
Qabul qildi: MAHMUDOV ZAYNIDDIN
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.

Dastur matni:

  1. #include "stdafx.h"

  2. #include

  3. #include

  4. #include

  5. #include

  6. #include

  7. using namespace std;

  8. int main(){

  9. // matnli faylni o'qish uchun ochish 10.ifstream oqi("1.cpp"); 11.if(!oqi.is_open()){

12.cout<<"Fayl topilmadi"<14.int i=1; 15.string line, str;
16.bool s=0,s1=0, s2=0; int e1=0,e2=0; 17.int z2=0;

  1. // fayl o'hirigacha o'qish

  2. while (getline(oqi, line)) // qatorning ohirigacha o'qish 20.{

21.if(oqi.fail()) break; // faylda ma'lumotar tugashi 22.e1=0; e2=0; string h=""; int h2=0;

  1. // fayldan o'zlashtirilgan qator ohirigacha o'qish

  2. // Ushbu satrda vazifada berilgan aktiv belgilarni aniqlash 25.for(int t=0; t

26.s=0; s1=0; s2=0; e1=0; e2=0;
27.string d; d.assign(line,t,1); // line satrini xar bir elementini d ga o'zlashtirish 28.// leksik tahlil uchun
29.if(d=="=" || d=="+" || d=="-" || d=="*" || d=="/" ){ 30.// sintaksis tahlil uchun
31.if(line[t-1]=='+' || line[t-1]=='-' || line[t-1]=='*' || line[t-1]=='/' ){
32.if(d!="=" && (line[t-2]!='+' || line[t-2]!='-' || line[t-2]!='*' || line[t-2]!='/') ){ 33.cout<kelgan"<35.}
36.}
37.if(line[t+1]=='+' || line[t+1]=='-' || line[t+1]=='*' || line[t+1]=='/' ){ 38.// sintaksis tahlil uchun
39.if(d=="="){
40.cout<42.}
43.}




  1. Download 3.06 Mb.

    Do'stlaringiz bilan baham:
  1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling