Файл қосу

Лексикалық анализдің грамматикасы



|Қазақстан Республикасы білім және ғылым министрлігі                             |
|Семей қаласы ШӘКӘРІМ атындағы МЕМЛЕКЕТТІК УНИВЕРСИТЕТІ                          |
|3 деңгейдегі СМК құжаты         |ПОӘК               |ПОӘК                       |
|                                |                   |042.18.39.1.120/01-2013    |
|ПОӘК                            |10.09.2013ж        |                           |
|«Программалау технологиялары»   |№1 басылым         |                           |
|пәнінің оқу-әдістемелік         |                   |                           |
|материалдары                    |                   |                           |






                        «Программалау технологиялары»
                       ПӘНІНІҢ ОҚЫТУ-ӘДІСТЕМЕЛІК КЕШЕН
                5В011100 - «Информатика» мамандығына арналған
                         ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР















                                Семей, 2013 ж



                                   МАЗМҰНЫ

|      |Глоссарий                                                      |      |
|      |Дәрістер                                                       |      |
|      |Зертханалық сабақтар                                           |      |
|      |Студенттің оқытушымен бірге орындайтын өздік жұмысы            |      |
|      |Студенттердің өздік жұмыстарының құрылымы                      |      |






























































   1. Глосарий


Транслятор– программалаудың кіру  тілінде  берілгенді  бастапқы  программаға
түрлендіретін;   объектілік    тілде    берілгенді    жұмыс    программасына
түрлендіретін, қызмет көрсететін программа.
Ассемблер–  машиналық  тілдің   символдық   құрамын   командаға   өзгертетін
системалық қызмет көрсететін программа.
Компилятор–   бастапқы   программалау    тілінде    жазылған    трансляцияны
программаның машиналық тіліне орындайтын қызмет көрсету программасы.
Интерпретатор –  бастапқы  программаның  орындалуымен  трансляциясын  жүзеге
асыратын программа немесе құрылғы.
Эмулятор – берілген ЭЕМ-нен өзгеше болатын және берілген ЭЕМ-де  программаны
өзгертпей орындауға мүмкіндікті қамтамасыз ететін программа.
Код түрлендіруші – бір ЭЕМ-де берілген машиналық тілдегі программаны  екінші
машиналық тілдегі программаға түрлендіретің программа немесе құрылғы.
Макропроцессор – бір тізбектің симвлодарын  басқамен  ауыстыруды  қамтамасыз
ететін программа.
Синтаксис  –  қандай-да  бір  тілдің  элементтерін   формалауды   анықтайтын
ережелердің бірігуі.
Семантика – тілдің элементтері  мен  оның  мағыналық  мәндерінің  арасындағы
қатынасты анықтайтын ереже немесе шарт.
Синтаксистік анализатор – синтаксистік ережелер және  берілген  программалау
тілінің семантикасына бастапқы операторлардың сәйкес келуін жүзеге  асыратын
компилятор құрлымы.



   2. 2. Дәріс сабақтарының мазмұны.


      Дәріс 1. Трансляторлар  жайлы жалпы мағлұматтар
      Жоспар:
    – Пәннің мақсаты мен есебі.
    – Негізгі ұғымдар және анықтамалар.
    – Программалау және трансляторлар тілінің жалпы ерекшеліктері.
    – Транслятордың жалпыланған құылымы.
    – Транслятордың блоктарының нұсқалары.
    – Пәннің мақсаты мен мазмұны.


      Қазіргі уақытта жаланды тілдер  программалауда  ғана  емес,  басқа  да
облыстарда кеңінен қолданыс табуда.
      Пәннің мақсаты:
      Формальді грамматика мен тілдер теориясының негіздері  мен  байланысты
білімді ұсыну.  Осы  қойылған  мақсатқа  пәнді  оқытуда  қол  жеткізу  үшін,
мынандай мәселелер шешіледі:
      1. Дәріс курсының  барысында  транслятор  құрылымдары  мен  трансляция
процесін ұйымдастырудың жалпы принциптері қарастырылады.
      2.  Зертханалық  сабақтарда  және  өздік  жұмыстардың  жүру  барысында
теориялық
      3. Білімнің практика жүзінде бекіту: программалаудың қарапайым  тіліне
транслятор жасалуда.
      Негізгі ұғымдар мен анықтамалар.
      Транслятор–   программалаудың   кіру   тілінде   берілгенді   бастапқы
программаға түрлендіретін; объектілік тілде берілгенді  жұмыс  программасына
түрлендіретін, қызмет көрсететін программа.
      Ассемблер– машиналық тілдің  символдық  құрамын  командаға  өзгертетін
системалық қызмет көрсететін программа.
      Компилятор–  бастапқы  программалау  тілінде   жазылған   трансляцияны
программаның машиналық тіліне орындайтын қызмет көрсету программасы.
      Интерпретатор  –  бастапқы  программаның  орындалуымен   трансляциясын
жүзеге асыратын программа немесе құрылғы.
      Эмулятор –  берілген  ЭЕМ-нен  өзгеше  болатын  және  берілген  ЭЕМ-де
программаны өзгертпей орындауға мүмкіндікті қамтамасыз ететін программа.
      Код түрлендіруші – бір ЭЕМ-де берілген машиналық  тілдегі  программаны
екінші  машиналық  тілдегі  программаға   түрлендіретің   программа   немесе
құрылғы.
      Макропроцессор  –  бір  тізбектің  симвлодарын   басқамен   ауыстыруды
қамтамасыз ететін программа.
      Синтаксис – қандай-да бір тілдің  элементтерін  формалауды  анықтайтын
ережелердің бірігуі.
      Семантика  –  тілдің  элементтері  мен   оның   мағыналық   мәндерінің
арасындағы қатынасты анықтайтын ереже немесе шарт.
      Синтаксистік  анализатор  –  синтаксистік   ережелер   және   берілген
программалау тілінің семантикасына  бастапқы  операторлардың  сәйкес  келуін
жүзеге асыратын компилятор құрлымы.
      Трансляторлар мен программалау тілдерінің ортақ ерекшеліктері.
      Программалау  тілдері  бір-бірінен  айырмашылқтары  жеткілікті   түрде
үлкен  болып келеді: Құрылымы жағынан, күрделілігі жағынан.
      1.   Программалау   тілдері   программалауды   жеңілдетуге   арналған.
Содықтан олардың  берілгендер  операторлары  мен  құрылымдары      машиналар
тіліне  қарағанда әлдеқайда қуатты.
      2.    Программалаудың        көрнектілігін        арттыру         үшін
адамдарға     қабылдауға     әлде қайда ыңғайлы   болуы     үшін      сандық
     кодттар      орнына      тілдің      құрылымы       символикалық   және
графикалық түрлері қолданылады.
      3. Кез-келген тіл үшін анықталатындар:
         –  Дұрыс  программаларды   жазуда   қолдануға   болатын   көптеген
           символдар.
         – Дұрыс программалаудың ережелер жиыны.
         – Әрбір дұрыс программаның «мағынасы».
      Программалау тілімен мен программа  құрылымы  арасындағы      байланыс
-синтаксистік бейнелеу деп аталады.
      Транслятордың жалпыланған құрылымы.
      Әрбір    программалау    тілінің    ортақ        қасиеттері        мен
заңдылықтары      болатыны  сияқты,    осы  тілдердің  трансляторларына   да
қатысты болады.   Оларда     бастапқы мәтіннің     түрлендіруінің      ұқсас
процестері      ағып        жатады.  Компилятор       мен   интерпретатордың
жалпыланған құрылымы:
         – Лексикалық анализатор тізбек;
         – Синтаксистік анализатор;
         – Код генераторы;
         – Қателер  анализаторы;
         – Қателер жайлы мәліметтер;
         – Программаның аралық көрсетілуі;
         – Объектілі код;
         – Бастапқы программаның мәтінін көрсететін, символдар тізбегі.


      Тапсырмалар мен бақылау сұрақтары.
      1. Мыналардың айырмашылықтарын атаңыз:
         – Компилятордың интерпритатордан айырмашылығы;
         – Компилятордың ассемблерден айырмашылығы;
         – Эмулятордың  интерпретатордан айырмашылығы;
         – Синтаксистiң семантикадан айырмашылығы;
      Программалау тiлiнiң соңғы шығарылған қандай белгiлi түрiн бiлесiз.
    1. Аталған тiлдердiң негiзгi сипаттамасын айтыңыз;
    2. Программалау тiлiмен байланысы жоқ  трансляция  әдістерін  облыстарда
       қолданылуын нақты мысалдарын келтіріңіз;
    3. Программалау тiлдерін компиляциялауға нақты мысалдар келтіріңіз;
    4. Программалаудың интерпретациялау тiлiне мысалдар келтiрiңiз;
    5.  Компиляторларыда,  интерпретаторлары  да  бар  болатын  программалау
       тiлiне нақты мысал келтiрiңiз;
    6. Компилятордың негiзгi қасиеттерi мен кемшiлiктерi;
    7. Интерпретатордың негiзгi қасиеттерi мен кемшiлiктерi;
    8. Өзіңізге белгiлi екi программалау тiлдерiнiң синтаксистерiнiң негiзгi
       айырмашылықтарын айтыңыз;
    9. Өзіңізге белгiлi екi программалау тiлдерiнiн семантикаларының негiзгi
       айырмашылықтарын айтыңыз;
   10. Трансляция процесiнiң негiзгi фазаларын атаңыз.


      Дәріс 2. Формальдi грамматика мен тiлдер теориясынын негiздерi.


      Жоспар:
         – Тiлдердi анықтау қасиеттерi;
         – Формальды грамматикалар ережелерге шектеулерi бар грамматика;
         – Тiлдiң синтаксисiнiң жазылуынын әдiстерi.


      Тілдерді анықтау әдістері.
      Программалау   тілінің   сипатталуы   көбінесе   формальді   тілдердің
теориясына  сүйенеді.  Бұл   теория   синтаксистік   анализ   бен   аударуды
ұйымдастыру үшін ең бастысы болып табылады. Тілдерді анықтаудың екі  негізгі
әдісі бар:
      1) генератор немесе туындату механизмі;
      2) тану механизмі немесе танытушы.
      ФОРМАЛЬДІ ГРАМАТИКАЛАР.
      Грамматика деп мынатөрттікті айтамыз: GT=(N,T,P,S),
      Мұндағы N-терминальді емес символдардың ақырлы жиыны;  Е-  терминалдар
жиыны, S-N-ен алынған символ, Р-жиынның ішкі жиыны:
      (NUT)
      *
      N(NUT)
      *
      * (NUT)
      *
      -ережелер жиыны.
      Р жиынының Pj=(α,β) элементі ереже деп  аталады  және  мынандай  түрде
жазылады α=>β. Мұндағы α мен β тізбектілер, олар терминалдар мен  терминалды
еместерден тұрады.
     1) α тізбекшесі β тізбекшесін туындатады;
      2)  α тізбекшесінен β тізбекшесі шығарылады.
      Абстрактілі тілдерді сипаттау үшін мысалдар мен анықтамаларда мынандай
белгілеулерді қолданамыз.
      1) терминалдарды a, b, c, d-әріптері мен  немесе  0,1,...9  сандарымен
белгілейміз;
      2)  терминал еместерді A,  B,  C,  D,  S-белгілейміз;  (S-граматиканың
бастапқы символы;)
      3)  U,V,…Z-әріптерін  бөлек   терминалдар   ментерминалдар   еместерді
белгілеуге қолданамыз;
      4)   α,β,γ-арқылы  терминалдар  мен  терминалдар  еместердің  тізбегін
белгілеуде қолданамыз
      5) U,V,W,X,Y,Z -терминалдар тізбегі
      6)  E -белгісімен, бос тізбекті белгілеиміз (ешқандай символы жоқ)
      7) «→» белгісі, ереженің оң жағы мен сол жағын анықтауға  қолданылады.
МысА→cd деген Аcd-ні туындатады деп оқылады.
      Басқа тілді сипаттауға арналған тіл– мета тіл деп аталады.
      GT  граммтикасынамысал:
      GT=({A,S},{0,1}P,S)
      Мұндағы Р:1.S→ 0A1
      2.0A→ 00A1
      3.A→ E
      L(G) тілі – бұл терминалды тізбектер жиыны.


      Хомескийдің мета тілі.
      Хомекситтің метатілі  математикалық  логиканың  негізінен  шыққан.  Ол
келесі белгілеулер жүйесінен тұрады:
      1. « → » -символы оң жақ ережені сол жақ ережеден ажыратады
      2. терминал еместер А әрпімен белгіленеді (бұл оның нөмірін көрсететін
индекс)
      3. терминалдар – бұлар сипатталатын тілде қолданылатын символдар
      4. әрбір ереже тізбектің туындауын  анықтайды,  сонымен  бірге  бірдей
терминал еместер әртүрлі ережелерде сол жағынан кездесуі мүмкін.
      Хомекситтің метатілі бойынша идентификатордың сипаттамасы.
      Мынадай түрде кездеседі
      1. Α1→Α 23. Α1→Ω 45. Α1→σ
      2. Α1→Β 24. Α1→Ξ 46. Α1→τ
      3. Α1→Χ 25. Α1→Ψ 47. Α1→υ
      4. Α1→∆ 26. Α1→Ζ 48. Α1→ϖ
      5. Α1→Ε 27. Α1→α 49. Α1→ω
      6. Α1→Φ 28. Α1→β 50. Α1→ξ
      7. Α1→Γ 29. Α1→χ 51. Α1→ψ
      8. Α1→Η 30. Α1→δ 52. Α1→ζ
      9. Α1→Ι 31. Α1→ε 53. Α2→0
      10. Α1→ϑ 32. Α1→φ 54. Α2→1
      11. Α1→Κ 33. Α1→γ 55. Α2→2
      12. Α1→Λ 34. Α1→η 56. Α2→3
      13. Α1→Μ 35. Α1→ι 57. Α2→4
      14. Α1→Ν 36. Α1→ϕ 58. Α2→5
      15. Α1→Ο 37. Α1→κ 59. Α2→6
      16. Α1→Π 38. Α1→λ 60. Α2→7
      17. Α1→Θ 39. Α1→? 61. Α2→8
      18. Α1→Ρ 40. Α1→ν 62. Α2→9
      19. Α1→Σ 41. Α1→ο 63. Α3→Α1
      20. Α1→Τ 42. Α1→π 64. Α3→Α3Α1
      21. Α1→Υ 43. Α1→θ 65. Α3→Α3Α2
      22. Α1→ς 44. Α1→ρ ?


      Хомский-шутценберже мета тілі
      Жоғарыда    көрсетілген    идентификатардың    сипаттамасы     Хомекий
метатілінің  ауқымды    екенін    айқындайды,  бұл     оның     басқа     да
обстрактілі   тілдерді   сипаттауда қолдануға    болатындығын    дәлелдейді.
Хомский-шутценберже   ыңғайлы    және  шағым  болуын  арттыру  үшін,   тілге
қосымша құрылымдар енгізу шарт.
      Мына   тілдер бокус-норяның   кеңейтілген   формалары   деп   аталады.
  PL\J-Вирт мета тілі, Керниган-Ритчи метатілі (Си-ді сипаттайды).
      Дербес түрде К.Б.М.Ф,Вирт  қолдануы  бойынша  мынандай  ерекшеліктерді
қамтиды:
     1.  «[‘және’]»  түрдегі  квадрат   жақшалар,   ішіндегі   синтаксистік
        құрылымның болмауы туралы айтады.
     2. «{‘және’}» фигуралық жақшалар оның қайталануы туралы белгі  береді.
        (мүмкін0-рет).
     3. «(‘және’)» дөңгелек жақшалар, альтернативті  құрылымдарды  шектеуді
        білдіреді;
     4. «{(‘және’)}» екі жақша бірге берілсе, бір рет және одан да көп  рет
        қайталауды білдіреді;




      Вирт диаграмалары
      Басқа тілдермен қатар графиктік мета тілдер  де  кеңінен  қолданылады.
Соның ішіндегі ең танулысы-Вирт диаграмасының тілі. Ол бірінші  рет  Паскаль
тілін   сипаттауда   қолданылған.   Мета    символдар    келесіг    рафиктік
белгілеулермен ауыстырылған;
      Танытушылар
      Танытушы-қандайда  бір  жиынды  анықтайтын,  схемалық  алгаритм.   Оны
құрылғы ретінде көрсетуге болады.


      Бұл құрылғы 3 бөлімнен тұрады:
      1) кіру лентасы
      2) кіру басы
      3) жады(соңғы жадысына басқару құрылғысы)


      Танытушының конфигурациясы-жедел түсірілген сурет,онда:
      1) басқару құрылғысының жағдайы
      2) кіру лентасының құрамы
      3) жадының құрамы сипатталады.


      Танытушының жалпыланған құрылысы
      Бастапқы   конфигурация-   басқару   құрылғысы    бастапқы    берілген
жағдайда   тұрады,   кіре беріс    басы    кіру    лентасындағы    ең    сол
жақтағы   символды   оқиды,   жады  да    алдын    ала  бекітілген  бастапқы
құрам болады.
      Бекітуші   конфигурация-   басқару   құрылғысы   бір   ғана   жағдайда
   болады,    ол    алдын    ала  бөлінген  бекітуші  жағдайлардың  жиынында
жатады.


      Бақылау сұрақтары мен тапсырмалары:
     1. Формальді тілдерді  анықтаудың  негізгі  әдісін  атау  және  олардың
        айырмашылығы неде?
     2. Формальді грамматикаға анықтама беру деген не?
     3. Мета тілдер не үшін қажет?
     4. Грамматикадан туындайтын формалді тіл деп нені атаймыз?
     5.   Шешімнің   қорытындысын   анықтаңыз   және   олардың    арасындағы
        айырмашылықтарды атап көрсетіңіз;
     6. G3 грамматикасына мысал келтіріңіз;
     7. Танушыға анықтама беріңіз, оның құрылымын көрсетіңіз;
     8. Ережелері шектеулі белгілі грамматика тәсілін анықтаңыз;
     9. Танытушының анықтайтын тілінен  формальді  грамматиканың  анықтайтын
        тілден қандай айырмашылығыбар?
    10.  Зертханалық  жұмыстың  нұсқасымен  берілген  программалау   тілінің
        синтаксисін Вирт диаграммасы көмегімен сипаттаңыз.




      Дәріс 3. Программалаудың демонстрациялық (жариялау) тілі
      Жоспар:
         – Демонстрациялық тілдің тууына себеп болған бастамалар;
         – Семантикасы мен синтаксисі;
         – Программаларға мысалдар;
         –   ВиртDPL-дің   диаграммаларын   қолдану   арқылы   сипатталатын
           қолданушы синтаксисі.


      Демонстрациялық тілдің туындауына себеп болған бастамалар.
      Транслятордың         жасалуын         іске         асыру         үшін
программалау     тілі     болуы     қажет.
      Қолданылып    жүрген    програмалау    тілін  алуға      да    болады.
Бірақ,   жасап     шығарылатын  транслятор     көлемі     жағынан      үлкен
болып,    оны  шығарылуын     бақылау    қиынға      түседі.   Транслятордың
жасалу       әдісін       зерттеу       үшін     кез-келген       қолданылып
жүрген  программалау    тілін    керекті    деңгейге    дейін   (ықшамдауға)
жеңілдетуге  болады. Мұндай әдіс      көптеп    қолданылады.    Программалау
тарихында   өз   тілімізді     жасап     шығаруға бастама болатын  идеяларға
толық жасалу жолындағы тіл DPL-ді қарастырамыз.
      Dpl-дің семантикасы мен синтаксисі.
      DPL-дің       құрамында     қарапайым       программаларды       жасап
шығаруға     болатын  басқару    және    берілгендерді  жөндейтін    негізгі
операторлар   бар. Сонымен    бірге,  онда,  басқа      жетілген    тілдерде
кеңінен     пайдаланылатын    конструкциялар      жоқ.    Алдымен  элементар
конструкцияларды,     содан       кейін        программаның        құрылымын
қарастырамыз. DPL-дің синтаксисін сипаттауда КБНФ-ті қолданамыз.


      Элементар конструкциялар.
      Тілдің     элементар     конструкцияларына      жататын        негізгі
ұғымдар.   Олар   тіл алфабитінің терминалдық символынан тұрады.
      Элементарға    мынандай       ұғымдар       жатады:     идентификатор,
сандар   (бүтін, нақты, екілік,   ондық),    түсініктемелер,    белгілеулер,
опирация     белгілері,   бөлгіштер, символдар қатары.
      Бұл     тізімді     ары     қарай     жалғастыр     беруге     болады.
  Мысалы:   идентификатор түрдің,  функцияның      немесе      процедураның,
айнымалының     аты     ретінде     қызмет     ете алады.


      Dpl-діңэлементар конструкцияныңсинтаксисі.
      $ әріп=“A”/“B”/“C”/“D”/“E”/“F”/“G”/“H”/
      $ сан=“0”/“1”/“2”/“3”/“4”/“5”/“6”/“7”/“8”/“9”/
      $ идентификатор =(әріп/“-”  αәріп/сан/“-”}
      $ сан=бүтін/нақты
      $ бүтін=екілік/сегіздік/ондық/оналтылық
      $ екілік =”{2}”{/”0””1”/}
      $сегіздік =”{2}”{/”0””1”/}
      $ ондық =”{2}”{/”0””1”/}
      $ оналтылық =”{2}”{/”0””1”/}
      $ нақты=сандық – жол.реті сандық –жол“.”[сандық -жол][реті]
      $сандық жол={/сан/}
      $реті=(“E”/”e”)[“+”/”-“/сандық жол
      $ пробелдік символ={/пробел;тобуляция(долдыауыстыру)түсініктеме}/
      $түсініктеме=”/*”{символ}”*/”
      $жол=”““{символ/““““}“““
      Пробел деп бос орынды айтамыз;” жолды  ауыстыру”,  табуляция  ұғымдары
көрінбейтін символдарды анықтайды


      DPL-дегі программалар мысалы:
      Мысал 1. Евклид алгоритмі (ең үлкен ортақ бөлгішті табу).
      begin
      varx, y:int;
      read x, y;
      loop x !=y ->
                 case
      x >y ->x :=x -y
                 or
      y >x ->y :=y -x
                 end
      end;
           write x
      end.


      Мысал 2. Ең үлкен ортақ бөлгішті табу және  ең  кіші  ортақ  бөліндіні
табу.
begin
var x, y, u, v:int;read x, y;/* операндтарды енгізу */
      u, v :=y, x;
      loop
x >y ->x, v :=x -y, v +u
      or
y >x ->y, u :=y -x, u +v
      end;
write"НОД =", x;
write skip, "НОК=", (u +v)/2
end.


      Мысал 3. Енгізілген лектің ішіндегі n элементердің қосу
      begin
      vara, i, s, n:int;
      i,s :=0,0;
      read n;
           loop
           iread a;s,i:=s+a,i+1
      end;
      write s
      end


      Мысал 4. Вектордің элементерін реттеу.
      begin
      var A[100], i, n:int;
      i:=0;
      read n;
      loop
      iread A[i];
      i:=i+1
      end;
      i:=0;
      loop i
           case        15
      A[i]>A[i+1 ]->
      A[i], A[i+1 ],i:=A[i+1], A[i], 0
           or
      A[i]<=A[i+1 ]->
      i:=i+1
           end
      end;
           i:=0;
           loop
           i
      write A[i], skip;
           i:=i+1
      end
      end






      Вирт диаграммасын қолдану арқылы қолданушы синтаксисінің сипаттамасы
      Келесі  бөлімдерде  көрсетілген  транслятордың   жасалу   жолы.   Вирт
диаграммасын  қолдану  арқылы  DPL  синтаксисінің  сипаттамасына   сүйенеді.
Сондықтан  бір  мета  тілден  екіншісіне  ауысуды  жүзеге  асыру  қажет.  Ал
синтаксис бұрынғыснша қолданылатын болады, ал оның өзгеруі керісінше  жүзеге
асырылатын болады. Вирт  диаграммасын  қолдану  арқылы  DPL-дің  синтаксисін
көрсету суретте ұсынылған.


                                    [pic]
                                    [pic]


      [pic]




      Бақылау тапсырмалары мен сұрақтар
      1) Зертханалық жұмысты аяқтау,  нұсқа  бойынша  берілген  программалау
тіліне программалар мысалын жазу.


      Дәріс 4. Лексикалық анализді ұйымдастыру


      Жоспар:
         – Лексикалық анализдің фазасының қажеттілігі;
         – Транслитератор;
         – Лексикалық анализдің әдістері мен грамматикасы.


      Лексикалық анализдің фазасының қажеттілігі.
      Лексикалық    анализ-трансляция     процесінің     бірінші     фазасы,
Лексема   деп    аталатын  кіру  тізбегінің  символдарын   әлдеқайда   үлкен
конструкцияларға топтау.
      Әрбір лексемамен 2 ұғым байланысты:
      1. Лексема класы;
      2. Лексема мәні.


      Транслитератор.
      Транслитератор деп - әрбір бөлек символдарға кластарды сәйкестендіруді
жүзеге асыратын құрылғы. Символдар класының қарапайым түріне жататындар:
     1. Әріп-әріптер жиынына сәйкес  қойылатын  класс,  бұл  әріптердің  бір
        алфавиттен болуы шарт емес.
     2. Сан-көбінесе 0 ден 9-ға дейінгі сандарға қатысты символдар жиыны;
     3. Бөлектегіш - пробел, жолды ауыстыру;
     4. Ескерту-тілдің алфавитіне тиісті емес символдар;
     5. Басқалар-белгілі категориялардың ешбіріне жатпайтын символдар.


      Символдар. Лексикалық анализдің грамматикасы.
      Лексикалық анализаторлар көбінесе элементар конструкцияларды тану үшін
қолданылады. Вирт диаграммасымен ақырлы автомат арасындағы  байланыс  ақырлы
автоматты құрастыру үшін  Вирт  диаграммасын  жәнес  ол  жақтың  рекурссиялы
грамматикалар  қатарын  қолдануға  болады.  Ережежелерді   сипаттауда   олар
анағұрлым көрнекті. Сонымен  бірге  Вирт  диаграммасымен  ақырлы  автоматтар
арасында  бір  мәнді  сәйкестік  бар.  Терминалдардан  ғана   тұратын   Вирт
диаграммасына эквивалентті ақырлы автомат мынадай түрде құралады:
     1. Диаграмманың бастапқы доғасы арқылы  автоматтың  бастапқы  жағдайына
        түрленеді.
     2. Диаграмманың доғасы ақырлы автоматтың бекітуші жағдайына түрленеді.
     3.  Ақырлы  автоматтың  құралуын  идентификатордың  сипаттау  мысалында
        көруге болады.

[pic]


      Вирт диаграммасымен оң сызықты диаграммалар  арасындағы  байланыс,  оң
жақ рекурсияны итерацияға түрлендіру. Оң сызықты грамматика болған  жағдайда
ақырғы  автомат  құрамай-ақ,  бастапқы   грамматиканы   Вирт   диаграммасына
түрлендіруге болатыны туралы айта аламыз.
      А) Қарапайым грамматиканы түрлендіру:


                                    [pic]


      Вирт  диаграммасымен  сол  жақ  рекурсияның  грамматикасы   арасындағы
байланыс. Сол жақ рекурсияны итерацияға түрлендіру.
      Құрамында сол жақ рекурсиясы бар ережелер үшін итерацияға түрлендіруге
болады:
      1) Рекурсивті анықталатын терминал емес тен шығатын  доға,  цикл  құру
арқылы ереженің ең соңын әкеліп қосылады.
      2) Адресаты жоқ терминал еместер сызылып тасталынады, ал оған  кіретін
доға алынып тасталады.


      Бақылау сұрақтар мен тапсырмалар.
     1. Лексикалық анализатор не үшін қажет?
     2. Лексикалық анализатордың не туғызады?
     3. Сканердің көмегіне жүгінбей-ақ қоюға бола ма?
     4. Транслитератордың тағайындалуы?
     5. Сканер мен ақырғы автомат арасында қандай айырмашылық бар?
     6. Вирт диаграммасымен ақырғы автомат арасында қандай айырмашылық бар?
     7. Лексикалық анализдің негізгі әдістерін атаңыз
     8. Тура емес лексикалық анализдің жалпыланған түріне мысал келтіріңіз.
     9. Тура лексикалық анализдің жалпыланған түріне мысал келтіріңіз.






     Дәріс 5. Прогламалаудың демонстрациалық тілінің лексикалық амалдары
      Жоспар:
         – DPL. Транслитераторы.
         – DPL – дің тура емес лексикалық анамуаторы.
         – Тура лексикалық анамуаторы.
      Транслитератордың жалпы ұйымдастырылуы.
     1. Әріптер классы: латын алфавитының бас және кіші әріптері;
     2. Ондық сандар классы: 0-ден 9-ға дейінгі арап цифрларын біріктіреді;
     3. Екілік сандар классы: 0 мен 1 сандарын біріктіреді;
     4. Сегіздік сандар классы: 0 ден 7 дейін сандарды біріктіреді;
     5. Оналтылық сандар классы: 0 ден 9-ға дейін сандар кіреді, және A,  B,
        C, D, E, F, a, b, c, d, e, f – сандары кіреді.
      Dpl– дің тура емес лексикалық амалдары.
      Тәуелсіз ағырлы автоматтардың бірігуі  ретінде  тура  емес  лексикалық
анамуатор танылады. Ал бұл автоматтарды алдынғы  ретте  көрсетілгендей  Вирт
диаграммасын қолдану арқылы сипаттауға болады.
      [pic]


      Әрбір кілттік  сөздерді  талдау  үшін  оларға  өздерінің  автоматтарын
құруға болады.
      Вирт диаграммасы көмегімен сипатталатын лексим.


      [pic]


      void nxl(void) {
           do {
      i_lv = -1;
      lv[0] = '\0';
           if(si == EOF) {lc = lexEof;}
           else if(isSkip(si)) {nxsi(); lc = lexSkip;}
           else if(isLetter(si) || si == '_'){
      lv[++i_lv]=si; nxsi(); id_etc();
      }
           else if(isDigit(si)) {number();}
           else if(isIgnore(si)) {nxsi(); lc = lexIgnore;}
           else if(si == '/') {nxsi(); divcom();}
           else if(si == '\"') {nxsi(); string_const();}
           else if(si == ';') {nxsi(); lc = lexSemicolon;}
      21
      else if(si == ',') {nxsi(); lc = lexComma;}
           else if(si == ':') {
      nxsi();
           if(si == '=') {nxsi(); lc = lexAssign;}
      else lc = lexColon;
      }
      else if(si == '(') {nxsi(); lc = lexLftRndBr;}
      else if(si == ')') {nxsi(); lc = lexRghRndBr;}
      else if(si == '[') {nxsi(); lc = lexLftSqBr;}
      else if(si == ']') {nxsi(); lc = lexRghSqBr;}
      else if(si == '*') {nxsi(); lc = lexStar;}
      else if(si == '%') {nxsi(); lc = lexPercent;}
      else if(si == '+') {nxsi(); lc = lexPlus;}
      else if(si == '-') {
      nxsi();
           if(si == '>') {nxsi(); lc = lexArrow;}
      else lc = lexMinus;
      }
      else if(si == '=') {nxsi(); lc = lexEQ;}
      else if(si == '!') {
      nxsi();
           if(si == '=') {nxsi(); lc = lexNE;}
      else {lc = lexError; er(1);}
      }
      else if(si == '>') {
      nxsi();
           if(si == '=') {nxsi(); lc = lexGE;}
      lc = lexGT;
      }
      else if(si == '<') {
      nxsi();
      if(si == '=') {nxsi(); lc = lexLE;}
      lc = lexLT;
      }
      else if(si == '{') {nxsi(); prenumber();}
      else if(si == '.') {lv[++i_lv]=si; nxsi(); fltnumber2();}
      else {lc = lexError; er(0); nxsi();}
      } while (lc == lexComment || lc == lexSkip || lc == lexIgnore);
      }


      Бақылау сұрақтар мен тапсырмалар.
      Зертханалық  жұмыстың  орындалуы  үшін   тапсырма   нұсқасына   сәйкес
лексикалық анализатор жасап шығару.


       Дәріс 6. Синтаксисті талдауды ұйымдастырудың жалпы принциптері
      Жоспар:
         – Синтаксисті талдауды тағайындау.
         – Синтаксистік талдаудың әдістерінің классификациясы.


      Синтаксистік  талдау  синтаксистік  анализдің  бірінші   этапы   болып
табылады.  Синтаксистік  талдаудың  орындалуы  танытушылар   арқылы   жүзеге
асырылады.


                                    [pic]

      Синтаксистік талдаудың әдістерінің классификациясы:
      Үстіңгі деңгейде бөлектеніп тұрғандар:
     1. талдау әдістері
     2. талдау тізбегі
     3. алдыңғы жақты көру мүмкіндігі
     4. қайтуларды қолдану
      Талдаулар кезінде әр түрлі  бұтақтардың  пайда  болатынын  суреттерден
көруге болады.
      Талдаудың тізбегі. Талдау тізбегі алдау бұтақтары әрбір  қадам  салтын
құрылып қалайша  жүзеге  асатынын  анықтайды.  Бұл  құрылымдар  солдан  оңға
қарай, оңнан солға қарай, және кез-келген бағытта жүзегеа сырылады.
      Алдыңғыны   көруді   қолдану.   Тілдер   (басқада   жүйелер    сияқты)
күрделілігіне  байланысты  әртүрлі  болып  келеді.  Кейбіреулерін  қарапайым
грамматиканың көмегімен сипаттау практика жүзінде  мүмкін  емес.  Сондықтан,
грамматикада     символдар     тізбегі     бірдей      болып      басталатын
альтернативтіережелер кездесуі мүмкін.
      Резюме.
       –  программалау  тілінің  синтаксисі  неғұрлым  күрделі  болса,  оның
         грамматикасы соғұрлым күрделі болып келеді.
       –   грамматика    неғұрлым    күрделі    болса,    талдау    әдісінің
         универсалдығымен күрделілігі басым болады.
       – талдаудың уиверсалды әістері оның орындалуына әлде қайда тежейді.
      Классификация категориясы
      Талдау  әдістері
      Талдау тізбегі
      Алдыңғы жақты көру
      Қайтаруларды қолдану кірітін шығатын аралас
      Солдан оңға
      Оңнан солға
      Кез-келген 1 символға алдыға
      N символға бар жоқ


      Бақылау сұрақтары мен тапсырмалар
    1. Синтаксистік талдауды тағайындау?
    2. Синтаксистік талдаудың нәтижесі не болып табылады?
    3. Синтаксистік талдаудың классификациясының критерийлерін атаңыз.
    4. Қандай талдау әдістері бар?
    5. Кіру тізбегін шығару мен талдау әдәстерінің арасындағы байланыс.
    6. Төмен қарай аралатын талдаудың қандай ерекшеліктері бар?
    7. Өсетін талдаудың қандай ерекшеліктері бар?
    8. Аралас талдаудың ерекшеліктері неде?
    9. Талдаудың қандай тізбектері бар?
   10. Талдау тізбегі мен әдістерінің арасындағы байланыс.
   11. Алдын көру мүмкіндігі бар талаудың ерекшеліктері.
   12. Комплексті бос грамматиканың қосымша классификациясы.
   13. Қайтулары бар талдаудың ерекшеліктері.
   14. Тілдің күрделілігі мен трансляциясы арасындағы байланыс.




      Дәріс 7. Автоматтарды пайдалану
      Жоспар:
      – Жадысы бар автоматтарды қолдану қажеттігі.
      – Жадысы бір автоматтар мен грамматикалар арасындағы байланыс.
      – Жадысы бір автоматпен S-грамматика арасындағы байланыс.
      – Жадысы бар автоматы q-грамматикасы бойынша құрастыру.


      G 7.1 грамматикасы мынандай түрде жүзеге асырылады. G7.1 =({A, S}, {(,
)}, P, S), Мұндағы Р былай анықталады:
      1. S ( (A) A
      2. A ( S
      3. A ((
      Ecептің шешу  жолының  бірі-жақшалар  санының  көбеюі  ашылатын  жақша
кездессе тізбекті ашу кезінде бірлікке көбейеді ал жабылатын жақша  кездессе
онда санақшының мәні бірлікке азаяды.
      Тізбекті ашу алдындағы санақшының мәні 0-ге тең болады. Сонымен  бірге
тізбекті қарау кезінде санақшы терісмәндерді  қабылдай  алмайды,  магазиндік
жадысы бар автомат мынандай бес түрлі жолмен анықталады:
      1. Кіру символдарының ақырлы жиыны;
      2. Магазиндік символдардың ақырлы жиыны;
      3. Жағдайлар жиынының ақырлығы;
      4. Басқару құрылғысы;
      5. Магазиннің басқару құрылымы.


      Автомат операциясы.
      Автоматтың қадамы немесе ауысуы – бұл  оның  жағдайының  өзгеруі.  Бұл
кезде бір қадамнан соң барлық өзгерістер болуы шарт емес.
      S-грамматика мен магазиндік жадысы бар автомат арасындағы байланыс.
      Контекстті бос грамматика S-грамматика  деп  аталады,  егер  мына  екі
жағдай орындалса:
      1. Әрбір ереженің оң және терминалымен басталады;
      2. Егер екі ереже бірдей сол жақтары бар болса, онда  бұл  ережелердің
оң жақтары әртүрлі терминалдық символдармен басталуы керек.
      Мысалы:
      Бірдей тілді беретін грамматиканы қарастырайық:
      G 7.2  грамматика, Р ережесінің құрамы:
      1. S→ат
      2. S→твs
      3. Т→вт
      4. Т→ва
      Бұл S-грамматика емес, себебі екі ереже терминал еместен    басталады,
бұл 1-ші шартты  бұзады;  ал  3,  4   ережелерде  сол     жақтары     бірдей
және    бірдей    терминалдық символдардан басталады.


      Q-грамматика бойынша автоматты құрау:
      Контекстті бос грамматика q-грамматика деп аталады,  сонда  тек  сонда
ғана, егер мына екі шарт орындалса; Әрбір ереженің оң  жағы  ε-бос  тізбекті
көрсетеді, немесе терминалдық символдан басталады.
      Ережелерді таңдау жиынының сол жақтары бірдей болса, олар қиылыспайды.
      Екінші шартты тереңірек қарастыру қажет, себебі  бірқатар  анықтамалар
еңгізу  керек.  Олардың  бірі-таңдау   жиыны.   Анықтаманы   ашу   үшін   q-
грамматикасының мысалын қолданамыз. G7\4 (s) ;
      1. S → aAS
      2. S→в
      3. А→сАS
      4.А→Е
      4-ші ереженің оң жағы терминалды символдан басталмағандықтан;  бұл  S-
граматика емес екендігін көруге болады. Берілген Х-терминал еместен  шығатын
терминалдар жиыны.
      (Келесі  (X)  -  арқылы  Х-тен  шығатын  терминалды   амалдар   жиынын
белгілейік). Келтірілген граматика үшін келесі жиындарды анықтауға болады:
      Келесі (А)={a,в}
      Келесі (S)={a,в}
      А-дан  шығатын  терминалды,  ереженің  оң  жағы  а-дан  немесе   в-дан
басталатын S терминал емес шығатындығынан анықтауға болады.
      S-тен шығатын терминалды,  S-тен  әрқашан  S-шығатындығынан  анықтауға
болады, ол а-дан немесе в-дан басталады: S(аАS(асАSS. Бұл ұғым, оң жағы  бос
болып келетін А→Е  ережені  қай  уақытта  қолдану  керектігін  көрсету  үшін
пайдаланылады. Алдымен,  бірінші  кезекте  әрқашан  бос  ереже  қолданылатын
стратегияны қарастрайық:


      |Қадам  |Стектің       |Кіру          |Қолданатын    |Түсініктемелер.    |
|нөмері |құрылымы      |тізбегінің    |ережелер      |                   |
|       |              |қалдығы       |нөмері        |                   |
|1      |∇S            |аасвв┤        |1             |-                  |
|2      |∇SA           |асвв┤         |4             |әйтпесе,талдау     |
|       |              |              |              |процесі ары қарай  |
|       |              |              |              |жүрмейді           |
|3      |∇S            |асвв┤         |1             |-                  |
|4      |∇SA           |свв┤          |4             |мұнда, берілген    |
|       |              |              |              |қадам дұрыс        |
|       |              |              |              |тізбекке қатысты   |
|       |              |              |              |қайтаруға әкеледі  |
|5      |∇S            |свв┤          |қабылдамау    |қабылдамау         |
|       |              |              |              |қайтаруды жүзеге   |
|       |              |              |              |асыруға тура келеді|


      4-ші қадамда 3-ші ережені қолдану дұрыс болар еді.


      |Қадам  |Стектің       |Кіру          |Қолданатын    |Түсініктемелер.    |
|нөмері |құрылымы      |тізбегінің    |ережелер      |                   |
|       |              |қалдығы       |нөмері        |                   |
|1      |∇S            |аасвв┤        |1             |-                  |
|2      |∇SA           |асвв┤         |4             |әйтпесе, тал-дау   |
|       |              |              |              |процесі ары қарай  |
|       |              |              |              |жүрмейді.          |
|3      |∇S            |асвв┤         |1             |-                  |
|4      |∇SA           |свв┤          |3             |ұсынған нұсқауларға|
|       |              |              |              |сәйкес жүру керек  |
|5      |∇SSA          |вв┤           |4             |әйтпесе,таңдау     |
|       |              |              |              |процесі ары қарай  |
|       |              |              |              |жүрмейді.          |
|6      |∇SS           |вв┤           |2             |-                  |
|7      |7 ∇S          |в┤            |2             |-                  |
|8      |∇             |-             |қабылдау      |Тізбек тілге       |
|       |              |              |              |тиісті!            |


      Осындай әдіспен талдау есептерін шешуге  болады.  Бірақ  q-грамматикан
егізінде құрылған талдау кезінде мынадай мсәеледе болуы мүмкін:
      А→Вα,  А→Е және В € след(А).
      Бұл есепті шешу үшін берілген ережені таңдау жиыны ұғымын еңгіземіз.


      Бақылау сұрақтары мен тапсырмалар:
     1. Синтаксистік талдау кезінде магазиндік жадысы бар автоматтар не үшін
        қажет?
     2. Магазиндік жадылы автомат қалай ұйымдасқан?
     3. Магазиндік жадылы автоматпен жүрілетін негізгі операциялар.
     4. Шектелген грамматикаға мысалдар келтіріңіз.
     5. S-грамматика бойынша магазиндік жадысы  бар  автоматы  қалай  құруға
        болады?
     6. S-грамматиканың кемшіліктері неде?
     7. S,q,α-грамматикаларға қысқаша анықтама және сипаттама беріңіз.






    Дәріс 8. Солдан оңға қарай талдау үшін динамикалық автоматты қолдану
Жоспар:
     – Магазиндік жадысы бар  автоматпен  формальлді  грамматика  арасындағы
       семантикалық ажырау.
     – Динамикалық ақырлы автоматтар моделі.
     – Динамикалық ақырлы автоматтарды сипаттауға  арналған  графиктік  мета
       тіл.
     –  Вирт  диаграммасын  динамикалық  ақырлы  автоматтарды   ұсыну   және
       қолдану.


      Магазиндік   жадылы   автоматпен   формальді   грамматика   арасындағы
семантикалық ажырау. Қарапайым транслятордың құрылу процесі былайша  көрініс
береді:


           1. Тілдің синтаксисінің жаслуы.
           2. Формальді сипаттау негізінде пайдаболған тілдің құрылымы.


      Синтаксистің  сипаттамасы  тілдің  синтаксистік  құрылымын  анықтайтын
формальді грамматиканың көмегімен жүзеге асырылады.
      Семантикалық ажырау, трансляторды жасау кезінде бір қатар  мәселелерді
жеңіп шығуға әкеліп соқтырады.
      Біріншісі-формальді грамматиканың моделін автоматы модельге түрлендіру
қажеттігі.
      Екіншісі-грамматиканы түрлендіру қажеттілігі.


      ДПК-автоматтардың моделі. Семантикалық  ажырауды  қысқарту  үшін  ДПК-
автоматтар қолданылады.
      Қарапайым  ақырлы  автомат  тілдің  қайталанбалы  конструкциясын  ғана
сипаттауға  мүмкіндік  береді.  Ұсынылып  отырған  модель  ақырлы   автоматы
кеңейтеді және кез келген контекстті бос тілді сипаттауға мүмкіндік береді.
      ДПК-автомат деп мына төрттікті айтамыз:
                                S=(A,Z.δ,M1)
      Мұндағы:
      1.  {a1,...,as,...,as}-  жағдайлар   жиыны   немесе  барлық  жағдайлар
алфавиті : as∈(U≅ν) мұнда  U={u1,...,um,...,ua9}-негізгі жағдайлар жиыны;
      V={v1,...,vn,...,vN}-ақырлы  жағдайлы  автоматтардың  қосымша   жиыны,
U∩V=∅.
      2.  Z={z1,...,zf,...,zF}-кіру    алфавиті  немесе  кіру  символдарының
жиыны zf∈(T≅G), мұндағы T={t1,...,tr,...,tk}-терминалды   символдар    жиыны
  G={g1,...,gp,...,gP}-туындайтын символдар жиыны T∩G=∅.
      3. δ:u; Z→A - ауысу функциясы;  G-ны A-ға бейнелейді.
      4. U1∈U- автоматтың бастапқы жағдайы.


      ДПК-автоматтарды  сипаттауға  арналған  графиктік  мета  тіл.   Ұсынып
отырған  моделдің    жалпы    көрінісі     үшін     графиктік     мета   тіл
жасалған.  (бұл  А-схамалар  деп  аталады)  А  схемалар    А-     схемаларға
барынша     жақын   метатілдерге  –Вирт   диаграммалары   және    R-схемалар
жатады.  Олардың  арасындағы  тілдендіру  алгаритімдерін  оңай   қарастыруға
болады.  Төменде  Вирт  диаграммаларын  А–  схемаларға  түрлендіру  амалдары
келтірілген.
[pic]
     1.  Вирт  диаграммасы  сәйкес  ДПК-автоматтарды  сипаттайтын  А-схемаға
        түрленеді.
     2. Вирт диаграммаларының төбелері автоматтың  жағдайларының  арасындағы
        ауысуларға сәйкес келеді.
     3. Бұтақтану  нүктелерін  құрайтын  Вирт  диаграммасының  альтернативті
        байланыстары жиыны ДПКавтоматтың жағдайларына сәйкес келеді.


      Қарапайым  арифметикалық   өрнектің   синтаксисін   сипаттайтын   Вирт
диаграммалары.


[pic]
     1. Вирттің әрбір диаграммасы ДПК-автомат береді.
     2. Кез-келген ДПК-автоматтың  кіру  символдары  терминалдық  символдар
        болып табылады.
     3. ДПК-ның бастапқы жағдайы. Вирт  диаграммасының  кіру  доғасы  болып
        табылады.
     4. Автоматы соңғы жағдайы. Вирт диаграммасының доғасы болып табылады.
     5.   Ақырлы   жағдайдың   табыстары.   Вирт   диаграммасының   шығуына
        эквивалентті болады.


      Бақылау сұрақтары мен тапсырмалар.
      1. Грамматикалар мен  магазинді  жад  пен  бар  автоматтар  арасындағы
         семантикалық ажырау неге байланысты?
      2. ДПК-автоматтардың моделін анықтаңыз;
      3. ДПК-автоматтар мен Вирт диаграммасы арасындағы өзара байланыс.


ЗЕРТХАНАЛЫҚ САБАҚТАРДЫҢ ЖОСПАРЫ


      Зертханалық сабақ 1. «Трансляторлар жайлы жалпы мағлұмат»
      Зертханалық сабақтың жоспары:
      1. Блок транслятордың көп өтімді әрекеттесті ұйымдастыру
      2. Блок транслятордың бір өтімді әрекеттестікті ұйымдастыру
      3. Блок транслятордың қиыстырылған әрекеттестікті  ұйымдастыру


      Зертханалық сабақ 2. «Формальды  грамматика  және  тілдер  теориясының
негіздері»
      Зертханалық сабақтың жоспары:
      1. Хомский мета тілі
      2. Хомский-Щутценберже мета тілі
      3. Бэкуса-Наура қалыптары (БНҚ)


      Зертханалық сабақ 3. «Программалаудың жариялау тілі»
      Зертханалық сабақтың жоспары:
      1.  Элементар  конструкциялар/  Құрама  конструкциялар.   Бағдарламаны
ұйымдастыру. Тілдің семантикасың қысқаша сипаттауы
      2. DPL-дебағдғарламалар мысалдары
      Мысал1. Евклид алгоритмы (еңүлкенортақ бөлгіштітабу)
      Мысал2. Ең үлкен ортақ бөлгішті табу  және  ең  кіші  ортақ  бөліндіні
табу.
      Мысал3. Еңгізілген лектің ішіндегі n элементердің қосу
      Мысал4. Вектордің элементерің реттеу


      Зертханалық сабақ 4. «Лексикалық анализд іұйымдастыру»
      Зертханалық сабақтың жоспары:
      1. Вирт диаграмасымен және ақырлы автоматтардың арасында байланыс
      2. Вирт диаграмасымен және оң-сызықты грамматикасымен байланыс. Оң жақ
рекурсияны итерацияғат үрлендіру
      3. Вирт диаграмасымен және оң-сызықты  грамматикасымен  байланыс.  Сол
жақ рекурсияны итерацияға түрлендіру
      4. Түзу емес  лексикалық  анализаторды  ұйымдастыру.  Түзу  лексикалық
анализаторды ұйымдастыру.


      Зертханалық сабақ  5.  «Программалаудың  жариялау  тілінің  лексикалық
анализаттары»
      Зертханалық сабақтың жоспары:
      1. Транслитератордың жалпы ұйымдастыруы
      2. Транслитератордың бағдарламалық орындауы
      3. Түзу емес лексикалық талдауышқа бөлек автоматтарына  арналған  Вирт
диаграммалары
      4. Бөлек автоматтардың бағдарламалық орындау
      5. Түзу емес лексикалық талдауыштың жалпы құрылымы


      Зертханалық  сабақ  6.  «Синтаксистік  талтауды  ұйымдастырудың  жалпы
принциптері»
      Зертханалық сабақты жоспары:
      1. Талдау әдістері
      2. Талдау жүйелілігі
      3. Алғақарауды қолдануы
      4. Қайтарулардың қолдануы
      5. Түйіні (резюме)


      Зертханалық сабақ  7.  «Солдан-оңға  астыға  қарай  талдауда  туылмалы
динамикалық автоматтарды қолдану»
      Зертханалық сабақтың  жоспары:
      1.  Құру  талдап  қорытылған  алгоритмі  үшін  АМП  төмен  түсетін–  S
грамматиканың
      2. S грамматика және ішкі жақшалары салынушылықты айырып тану
      3. АМП асуларының кестесімен бағдарламаны өңдеу.
      4. Рекурсивті түсіру әдісі қолданып бағдарламаны өңдеу.


      Зертханалық сабақ 8. «Использовании единамически порождаемых автоматов
для нисходящего разбора слева-направо»
      Зертханалық сабақтың жоспары:
      1. Дүкен жадылыа втоматтар және формалдық грамматикалар арасындағы
      семантикалық үзіліс
      2. Динамикалық туылатын ақырлы автоматтардың үлгісі
      3.  Динамикалық  туылатын  ақырлы  автоматтарды   сипатауға   арналған
графикалық мета іл.
      4. КС(1)  грамматиканы айырып  танитын,  динамикалық  туылатын  ақырлы
автоматтарды көрсету үшін Вирт диаграммаларының қолдану.


      5.3. Оқытушы мен студентердің өздік жұмыстардың жоспары


      ОСӨЖ №1
      Мәліметтер және типтер:
1. Динамическалық және статистикалық  ПТ.  Атты  және  структуралық  типтер
   эквивалентті.
2. Дәстүрлі ПТ-дің негізгі мәліметтер типтері.
3. Дәстүрлі ПТ-дің операторлық базис.
4. Модуль ұғымы. Суреттеу және әрекет облыстары.
5. Жабу аттар және көрсетілімділік.
6. Типтер параметтірлеумен байланысты проблемаллар.
7. Ерекше жағдай туралы ұғым.
8. Машиналық-тәуелді ерекшеліктердің  есептеу және басқару ұсыныс.




      ОСӨЖ №2
      Трансляция әдістері:
      1. Бағдарламалық қамтамасыз етуде құрастырушы орыны
      2. Компилятор структурасы.


      ОСӨЖ  №3
      Лексикалық талдау:
      1. Жүйелі жиындар және жүйелі айтылулар.
      2. Лексикалық талдауыштарды бағдарламалау.


      ОСӨЖ №4
      Синтаксистік талдау:
      1. Алдың-алаболжаулыкестелік басқарыс.
      2.Үстідең-астыға талдау алгоритмі,  LL(1)-грамматикалары,  рекурсивный
түсу, синтаксистік қателерден кейін бұрынғы қалпына келу.


      ОСӨЖ №5
      Бағдарлама аралық ұсынуы:
      1. Код генератордың ішінде ақпаратты үйымдастыру.
      2. Аралық денгейдегі ұсынуы:


      ОСӨЖ№6
      ПТ контекстік шарттары:
      1. Көрсетілім обылыстардың және блокты құрылымды сипатау
      2. Мәліметтерді басқару және типтерді бақылау.


      ОСӨЖ№7
      Құрастырушы кестелерінің ұйымдастыру:
      1. Орналастырып қою функциялары.
      2. Блоктық құрылымды орындау.


      ОСӨЖ№8
      Код генерациясы:
      1. Машина моделі.
      2. Айнымалылардың трансляциясы.
      3. Логикалық айтылулардың трансляция ерекшеліктері


      5.4. Студентердің өздік жұмыстардың жоспары
      СӨЖ №1
      Бақылау сұрақтаржәне тапсырмалар
      1. Өзгешеліктерді табыныз:
         – интерпретатордың компилятордан (құрастырушы);
         – компилятордың ассемблерден;
         – код түрлендірушідің транслятордан;
         – эмулятордың интерпретаторден;
         – синтаксистің семантикадан.
      2.  Сізге  танылы  бағдарламалау  тілдерінің  соңғы  өңдеулері  туралы
әнгімеленіз.
      Айтылған тілдердің негізгі мінездемелерің келтіріңіз.
      3. Бағдарламалау тілдерімен байланысты  емес,  трансляция  әдістерінің
облыстар бойынша қолдануының нақтылы үлгілерің келтіріңіздер.
      4. Құрастырулы программалық тілдеріне нақтылы мысал келтіріңіз.
      5. Интерпретаторлық программалық тілдерінен ақтылы мысал келтіріңіз.
      6. Құрастырушы және интерпретаторы бар программалық тілдерінен  ақтылы
мысал келтіріңіз.
      7. Компиляторлардың негізгі артықшылығы мен кемшіліктері.
      8. Интерпретатордың негізгі артықшылығы мен кемшіліктері.
      9.Белгілі екі программалау тілдерінің  синтаксисінде  айырмашылықтарың
сипатаныз.
      10.    Белгілі    екі    программалау    тілдерінің     симантикасында
айырмашылықтарың
      сипатаныз.
      11.  Трансляцияның  негізгі  фазаларың   және   олардың   тағайындауың
атаңыздар.
      12. Бір өтімді трансляцияның негізгі ерекшеліктерің атаңыздар.
      13. Көп өтімді трансляцияның негізгі ерекшеліктерің атаңыздар.
      14. Бір өтімді және көп өтімді трансляциялардың мүмкін  қиыстыруларына
мысал   келтірініз.   Бұл   схемалардың   практикалық     қолдануы    туралы
әңгімеленіздер.
      СӨЖ формасы: жазбаша және файл түрінде.


      СӨЖ№2
      Бақылау сұрақтар және тапсырмалар
      1.  Формалдық   тілдердің  негізгі   тәсілдері   және   айырмашылықтың
анықтамасын атаңыз.
      2. Формальдық грамматикаға анықтама берініз.
      3. Мета тілдер не үшін керек?
      4. Туынды граммматиканың формальді тілдері несі болып табылады?
      5. Шығару   көрсетілімінің   анықтаңыздар   және    айырмашылықтарының
 атаңыздар, олардың байланысын көрсетініз.
      6. Үш  көбейту   және   екі   қосылысы  бар,    G3    грамматикасынның
терминальдық   байланыс шынжыр шығарылысына мысал келтірініз.
      7. Бес   операндтары    бар,    G3    грамматикасынның    терминальдық
байланыс    шынжыр  шығарылысына    мысал    келтірініз.    Сол     бастапқы
терминалға   емес   байланыс шыжырдына мысал келтірініз.
      8. 6   және   7-ші   тапсыманың   шартарына   сәйкес   келетің   өрнек
  жазыныз,   және   бұл минимал қадам бойынша жасалу керек.
      9. 6   және   7-ші   тапсыманың   шартарына   сәйкес   келетің   өрнек
  жазыныз,   және   бұл максимал қадам бойынша жасалу керек.
      10. Танушыға анықтама берініз. Құрылымын көрсетініз.
      11. Сізге   танылым  ережеге   шек   қойылған    грамматика    классын
атаныз.   Оларға   анықтама берініз.
      12. Танылу   тілінің   және   анықталмальды   формальдық    тілдерінен
 қандай айырмашылықтары бар?
      13.  Химский    берген     иерархиясы     бойынша,     танушы     және
грамматика   арқылы   берілген фомальдік   тілдерінің  анықамаға  эквивалент
қатынасың айтыныз.
      14.  Вариант    бойынша    №2    Зертханалық    жұмысының    Вирт    д
иаграммасы     көмегімен    программалау      тілдерінің        синтакисінің
сипатаныз.   Егер   қиындық   туса   келесі  тақырыпты  зертеуге  кірісініз.
Содан кейін осы қадамды қайталаныз.
      СӨЖ формасы: жазбаша және файл түрінде.


      СӨЖ №3
      Бақылау сұрақтар және тапсырмалар
      1. №3   Зертханалық   жұмысынның   берілген   вариант   бойынша    сол
 жұмысқа программа мысалын келтіріп аяқтау.
      СӨЖ формасы: файл түрінде.


      СӨЖ №4
      Бақылау сұрақтар және тапсырмалар
      1. Лексикалық талдауыш не үшін керек?
      2. Лексикалық талдауыш нені туындайды?
      3. Сканерсіз жұмыс істеуге болады ма?
      4. Транслитератор қызметті.
      5. Сканермен ақырлы автоматордың байланысы неде?
      6. Вирт диаграммасымен ақырлы автоматордың байланысы бар ма?
      7. Ақырлы автоматордың және онжақты грамматиканың байланысы бар ма?
      8.Ақырлы автоматордың және сол жақты рекурсия грамматиканың  байланысы
бар ма?
      9.  Он    жақты     рекурсия     грамматикасын     итеративті     Вирт
диаграммасына   қалай түрлендіруге болады.
      10.Сол    жақты     рекурсия     грамматикасын     итеративті     Вирт
диаграммасына   қалай түрлендіруге болады.
      11.Лексикалық талдауштын негізгі тәсілдерің атаныз.
      12.Сызықтық   емес   лексикалық   талдауыштың   жалпылама    құрылымын
келтірініз.
      13.Лексикалық талдауыштың артықшылықтарымен кемшіліктері.
      14. Сызықтық емес лексикалық талдауыштың  қуатылыған  көтеруге  болады
ма?
      15.Сызықтық лексикалық талдауыштың жалпылама құрылымын келтірініз.
      16.Сызықтық лексикалық талдауыштың артықшылықтары мен кемшіліктері.
      17. Лексикалық  талдау  кезінде  дүрыс  танылу  тиыс  келетің  нақтылы
 программалау  тілдің конструкциясын тізіп шығыныз.
      18. Лексикалық  талдау  кезінде  дүрыс  танылу  тиыс  келетің   сіздің
оқытылу  программалау тілдің конструкциясы бойынша тізімін дайынданыз.
      СӨЖ формасы: жазбаша және файл түрінде.


      СӨЖ №5
      Бақылау сұрақтар және тапсырмалар
      1. Зертханалық   жұмыс   орындау   үшін   алынған   вариант    бойынша
 лексикалық талдаушты өнденіз.
      СӨЖ формасы: файл түрінде.


      СӨЖ №6
      Бақылау сұрақтар және тапсырмалар
      1. Синтаксистік талдаудың қызметтері.
      2. Синтаксистік талдаудың нәтижесі болып табылады?
      3. Негізгі синтакситік талдаудың таптастыруы белгілерің атаңыз.
      4. Қандай талдау әдістері бар?
      5. Кіріс байланыс шынжырының нәтижесімен талдау әдістерімен байланысы.
      6. Астыға қарай түсу талдаудың ерекшеліктері.
      7. Үстіге қарай шығу талдаудың ерекшеліктері.
      8. Қиыстырылған талдаудың ерекшеліктері.
      9. Қандай талдау жүйеліліктері бар?
      10. Талдау әдістері мен және талдау жүйеліліктері арасындағы байланыс.
      11. Алдыға қарай талдаудың ерекшеліктері.
      12. Контекстілі бос грамматикалардың қосымша таптастыруы.
      13. Қайтарылымды талдаудың ерекшеліктері.
      14. Тіл қиындығымен және оның трансляциясның арасындағы байланыс.
      СӨЖ формасы: жазбаша және файл түрінде.


      СӨЖ №7
      Бақылау сұрақтар және тапсырмалар
      1. Синтаксистік талдау кезінде дүкен  (кезек)  жадылы  автоматарды  не
үшін керек?
      2. Дүкен (кезек) жадылы автоматар қалай ұйымдастырылған?
      3. Дүкен (кезек) жадылы автоматардың негізгі операциялары.
      4. Қандай түрде грамматика қойылған  шектеулер  автоматтын  орындалуна
әсер етеді?
      5. Сізге белгілі шектелі грамматикаға мысал келтірініз.
      6. s-грамматика бойынша АМП-ні құруға болады?
      7. S-грамматиканың кемшіліктері.
      8. q-грамматика бойынша АМП-ні өндеу.
      9. S-, q-, L-грамматикалардың қысқаша мінездемелік анықтама берініз.
      10. Астыға   қарай    түсу    дүкен  (кезек)    жадылы    автоматардың
программалау   әдістердің өндірістері.
      11. Астыға   қарай    түсу    дүкен  (кезек)    жадылы    автоматардың
АМП    өту    кесі    қолданып  програмалау  өндірістердің  қандай   түрлері
болады?
      12. Рекурсив пен құрылған танушының қандай ерекшелігі бар?
      СӨЖ формасы: жазбаша және файл түрінде.


      СӨЖ №8
      Бақылау сұрақтар және тапсырмалар
      1.  Грамматика    және     дүкен   (кезек)     жадылы    автоматтардың
семантикалық   үзілісі   неде түрады?
      2. Туылмалы ақырды автоматтардың динамикалық моделін анықтаныз.
      3. ДТА-автоматамен және Вирт диаграммасының арасындағы байланыс.
      СӨЖ формасы: жазбаша және файл түрінде.


      5.5. Пән бойынша жазбаша жұмыстардың тақырыптары
      Рефератар тақырыптары:
      1. Программалау тілдердің синтаксисі, сематикасы және програматикасы.
      2. Формальдау проблемасы.
      3. Грамматикалар. Грамматикалардың  таптасыруы:  жиелі  грамматикалар,
контекстлі-бос     грамматикалар,     контекстілі-тәуедлі     грамматикалар,
жалпы     түрдегі   грамматикалар,   атрибуттыграмматикалар,    программалық
грамматикалар.
      4.   Алгоритмдік     проблемалар:      бос      орындық      проблема,
идентификациялық  проблема, тілдер эквивалентілігінің проблемасы.
      5.  Автоматтар.    Автоматтарды   топтастыру:    ақырлы    автоматтар,
дүкен(кезек)    жадылы  автоматтар,     екіжақты     автоматтар,     Тьюринг
машинасы,   детерминнаты және детерминнатсіз автоматтар, Джон Фон  Нейманның
автоматтары.
      6. Айқынсыз грамматикалар, автоматтар жәнетілдер.
      7. Бағдарламалау тілдерінің семантикасының формальдауы.
      8. Ерекшеліктер тілдері. Трансля әдістері. Лексическалық талдауыш.
      9. Синтакстік талдауыш. Семантикалық талдауыш.
      10. Объектілі кодтың генераторы. Объектілі кодтыық шамдау.


      5.7. «Тілдердің және автоматтардың теориясы» пәнінен емтихансұрақтары
      1. Синтаксис, семантика және бағдарламалау тілдерінің прагматиксы.
      2. Формалау проблемалары.
      3. Грамматика.  Грамматикалардың  таптастыруы:  жүйелі  грамматикалар,
контекстік-азат грамматикалар, контекстік-тәуелді грамматика.
      4.  Жалпы  түрдегі  грамматика,  атрибуты  грамматика,   бағдарламалық
грамматика.
      5. Алгоритмдік проблемалар:бостық проблема, идентификациялық проблема,
тілдердің эквиваленттілік проблемасы.
      6. Автоматтар. Автоматтардың таптастыруы:  соңды  автоматтар,  дүкенді
жадысы бар автоматтар, екі жақтық автоматтар.
      7. Тьюринг машиналары, детерминанты  және  детерминантсыз  автоматтар.
Джон фон Неймандық автоматтар.
      8. Айқынсыз грамматикалар. Автоматтар және тілдер.
      9. Бағдарламалау тілдерінің семантикасын формальдау.
      10. Ерекшеліктер тілдері.
      11.Трансляция әдістері.
      12.Лексикалық талдауыш.
      13.Синтаксистік талдауыш.
      14.Семантикалық талдауыш.
      15. Объектті кодтың генераторы. Объектті кодтың ықшамдауы.






Пәндер