LEX - Lexical Analyzer

Curs
7/10 (1 vot)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 4 în total
Cuvinte : 1220
Mărime: 12.02KB (arhivat)
Cost: Gratis

Extras din document

LEX (lexical analyzer) este un analizor lexical. In mod normal el este folosit impreuna cu YACC pentru a crea un compilator, dar poate fi folosit si separat.

LEX citeste un fisier cu extensia .L. Acest fisier il transforma intr-un fisier cu cod C, fisier care are numele fisierului initial si extensia .C. Exista mai multe variante ale LEX: FLEX (fast LEX), PCLEX.

Structura unui fisier LEX este urmatoarea:

Sectiune definitii

%%

Sectiune reguli

%%

Sectiune cod C

1. In prima sectiune se definesc macro-uri (se asociaza nume unor expresii regulate care vor fi folosite in sectiunea a doua), se includ fisiere antet scrise in C, se scrie cod C, care se va copia efectiv in fisierul C generat de LEX. Codul C va fi scris intre delimitatorii %{ si %}.

2. In a doua sectiune se definesc reguli (expresii regulate), precum si codul C ce se executa atunci cand ele sunt indeplinite. Cand se intalneste un text care corespunde expresiei regulate, se executa codul C asociat acelei expresii. Textul gasit este depus in variabila yytext (de tip char*), iar lungimea textului este depusa in variabila intreaga yyleng.

3. In ultima sectiune se scrie cod C ce se copiaza in fisierul C rezultat. Aici apar definitii de functii, inclusiv functia main (daca este cazul). De obicei in functia main se apeleaza functia yylex() care declanseaza efectiv analizarea lexicala.

Expresiile regulate se pot defini astfel:

1. Un caracter care nu este un metacaracter este o expresie regulata care corespunde acelui caracter (de exemplu A este expresia regulata ce corespunde caracterului A)

2. Doua expresii regulate concatenate r1r2 formeaza o noua expresie regulata, in care un text care corespunde primei expresii este urmat de un text corespunzator celei de-a doua expresii. Exemplu: ABCD.

3. Doua expresii regulate despartite prin |, r1|r2 este o noua expresie regulata. Un text corespunde lui r1|r2, daca el corespunde lui r1 sau lui r2. De exemplu, rosu|galben|albastru corespunde textului format cu unul dintre aceste cuvinte.

4. In generarea expresiilor regulate se pot folosi parantezele () pentru grupare.

5. Doua expresii regulate despartite prin /, r1/r2. Daca un text t1 corespunde regulii r1 si t2 corespunde regulii r2, atunci expresiei r1/r2 ii corespunde t1 numai daca este urmat de t2. De exemplu, expresiei PC/LEX ii corespunde textul PC numai daca este urmat de LEX.

6. Punctul . corespunde oricarui caracter cu exceptia delimitatorului de sfarsit de linie. De exemplu, A. corespunde oricarui cuvant din doua caractere, dintre care primul este litera A.

7. Caracterul ^ pus in fata unei expresii regulate. Textul corespunde expresiei regulate numai daca este la inceput de linie. De exemplu, pentru ^AB, cuvantul AB este acceptat numai daca este la inceput de linie.

8. Caracterul $ pus in fata unei expresii regulate textul corespunde expresiei regulate numai daca este la sfarsit de linie. De exemplu, pentru $AB, cuvantul AB este acceptat numai daca se gaseste la sfarsit de linie.

9. Intre paranteze patrate [ ] se pune o expresie regulata ce defineste o clasa de caractere. Regulile de definire a expresiei regulate din cadrul unei clase difera.

Concatenarea in cadrul unei clase reprezinta “sau”.

De exemplu, [0123456789] reprezinta orice cifra.

Caracterul - este folosit pentru a defini in cadrul unei clase un interval de caractere. De exemplu, [a-z] reprezinta orice litera mica, iar [a-zA-Z] reprezinta orice litera mica sau mare.

Caracterul ^ este folosit ca negatie daca este pus ca prim caracter in cadrul unei clase. De exemplu, [^0123456789] inseamna orice alt caracter in afara de cifra.

10. Ceea ce este pus intre ghilimele “” in cadrul unei clase sau in exterior anuleaza semnificatia metacarcterelor. De exemplu, “1.4*2” reprezinta textul 1.4*2.

11. Caracterul backslash anuleaza semnificatia caracterului ce urmeaza dupa el. De exemplu, {, }, ] etc. De asemenea, backslash este folosit pentru a construi secvente escape (cele din C): n, t etc.

Preview document

LEX - Lexical Analyzer - Pagina 1
LEX - Lexical Analyzer - Pagina 2
LEX - Lexical Analyzer - Pagina 3
LEX - Lexical Analyzer - Pagina 4
LEX - Lexical Analyzer - Pagina 5

Conținut arhivă zip

  • LEX - Lexical Analyzer.doc

Alții au mai descărcat și

Inginerie de Sistem

• Condiţionări şi cunoştinţe prerechizite Cursul nu are condiţionări prerechizite. Cunoştinţele prerechizite care pot facilita asimilarea...

Sisteme Informatice pentru Managementul Afacerilor

Capitolul I. Introducere în domeniul sistemelor integrate de management al afacerilor sau al softului de întreprindere , ERP și BI Definiții....

Sisteme de Fisiere Ditribuite

BIBLIOGRAFIE 51 Introducere 1 Introducere Sistemele de fisiere distribuite constituie o categorie aparte a sistemelor distribuite si oferã...

Calcul Tabelar Microsoft Excel

Excel este o aplicaţie informatică, formată dintr-un pachet de programe specializate, utilizat pentru calculul tabelar. Excel este o aplicaţie...

Circuite Logice Programabile

1. Recapitulare noţiuni de descriere în VHDL, sinteză şi implementare în circuitele logice programabile 1. 1. Introducere VHDL-ul este un limbaj...

Programare

Este considerat limbaj de programare de primă generaţie Limbajul maşină este constituit din succesiuni de cifre binare organizate la diverse...

Programare Orientata pe Obiecte

Paradigme de programare Paradigme de programare = un set de concepte, modele si practici care descriu esenta programarii Programare structurata...

Programare Structurata

Limbajul în general este un mijloc de comunicare. Limbajul folosit între oameni pentru a comunica între ei este limbajul natural. Un limbaj...

Ai nevoie de altceva?