Anexa E Sfarsit


Anexa F
Gramatica utilizata pentru generatoarele
automate de analizoare sintactice



 
 

Productie  Neterminal ::=MembruDrept #
Neterminal  identificator
MembruDrept  Fraza | MembruDreptOpSel Fraza
OpSel  |
Fraza  Simbol | FrazaSimbol
Simbol  Neterminal | Terminal
Terminal  <CodLexical >
CodLexical nrBaza10 identificator

Pentru reprezentarea terminalelor trebuie sa se realizeze o corespondenta intre codurile lexicale adoptate pentru limbajul sursa si simbolurile care se trec intre caracterele '<' si '>'. Exista doua posibilitati in acest sens:

A. Pe post de 'CodLexical' sa se treaca valoarea numerica stabilita pentru codul lexical respectiv;

B. Pe post de 'CodLexical' sa se treaca un identificator, iar generatorul de analizoare sintactice sa dispuna de un tabel de corespondenta intre identificatorii respectivi si valorile numerice ale codurilor.

Exemplu: consideram ca in fisierul de intrare pentru generatorul de analizoare sintactice avem productiile corespunzatoare neterminalelor ProgramSursa si SectiuneConst (vezi Anexa B).
ProgramSursa  ::= <100> <200> <300> Bloc <301> #
SectiuneConst ::=  <400> | <101> ListaDeclConst #
ProgramSursa  ::= <cheiePROGRAM> <codIdentificator> <pctVirg> Bloc <punct> #
SectiuneConst ::=  <epsilon> | <cheieCONST> ListaDeclConst #

iar tabelul de corespondenta ar fi:
 

cheiePROGRAM 100
codIdentificator 200
pctVirg 300
punct 301
epsilon 400
cheieCONST 101

Obs:


Legenda:

Anexa E Sfarsit