9. Формиране на таблици с лексеми и изграждане на дескрипторния текст на изходната програма.

Нека разгледаме конкретен пример. Нека ни бъде дадена програма на някакъв алгоритмичен език

Нека използваме следните кодове за типове токени:

K1 - ключова дума;

Лексикалният анализ може да се извърши, ако ни бъде дадена азбука,

списък с езикови ключови думи и служебни символи. Нека всичко

на разположение. Тогава вътрешните таблици на скенера ще приемат следния вид.

Таблица 1. Ключови думи.

Таблица 2. Разделители.

Резултатът от работата на скенера е таблица с идентификатори и таблица с константи

Таблица 4. Константи.

Въз основа на компилираните таблици можете да напишете входния текст чрез въведените дескриптори (дескрипторен текст):

( K1, 6) (K3, 2) (K2, 2) (k3, 3) ( K2, 2) (K3, 4) ( K2, 7) (K1, 5) (K2, 1)

( K3, 2) (K2, 7) (K2, 8) (K4, 1) (K2, 1)

( K3, 3) (K2, 7) (K2, 8) (K4, 2) (K2, 1)

( K3, 4) (K2, 7) (K2, 8) (K3, 2) (K2, 3) (K3, 3) (K2, 1)

10. Синтактичен анализ. Метод на рекурсивно спускане.

Граматиката на алгоритмичния език може да бъде специфицирана под формата на диаграми на Wirth, форми на Backus-Naur и под формата на формална граматика. Формалните граматики са за предпочитане, тъй като се използват широко както на теория, така и на практика при разработването и конструирането на транслатори от езици за програмиране.

Формалната граматика е набор от четири обекта: набор от нетерминални символи, набор от терминални символи, набор от продукции

и аксиомите на граматиката S, от които всички максими и изречения на дадения език могат да бъдат изведени с помощта на продукции.

11. Пример за граматиката на опростения език Паскал.

Езикова азбука, латински символи и служебни символи. Нека във формалната граматика на опростения Паскал всички нетерминални символиса затворени в ъглови скоби, крайните знаци са малки латински и служебни знаци, към които добавяме знаци за аритметични операции +, -, *, div и скоби ( ), които се използват и като разделители. Първата продукция е аксиома на езика.

Това всъщност е оригиналният запис и е и продукцията. Други продукти ще изглеждат така: