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)
Publicat de: Virgil Giurgiu
Puncte necesare: 0

Extras din curs

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

Autocad pentru începători

C1.1.CONCEPTUL DE CAD TERMINOLOGIE - COMPUTER AIDED ENGINEERING -CAE-vizeazăetapeledecercetare,inovaresiconcepţie; - COMPUTER AIDED DRAWING/...

Calculatoare

Răspunsuri Arbori şi păduri 1. D. O relaţie de încredere oferă posibilitatea folosirii în comun doar a resurselor între domenii; ea nu oferă în...

Securitatea informațională a business-ului

Lecţia 1 Introducere în securitatea informaţională 1.Informaţia ca obiect de valoare şi protecţie 4 2.Conceptele de bază ale Securităţii...

Informație și Document în Societatea Cunoașterii

Introducere I. Documente electronice – definire, caracteristici şi tipologie I. 1. Delimitări terminologice I. 2. Document text I. 3....

Evaluarea eficienței investițiilor în IT&C

Capitolul 1.BAZE METODOLOGICE ALE EVALURII EFICIENŢEI INVESTIŢIILOR ÎN IT&C 1.1. Evaluarea eficienţei în condiţiile specifice investiţiilor din...

Arhitectura microcalculatoarelor tip IBM-PC. configurații, caracteristici. reguli de instalare și exploatare

. Notiuni introductive Un sistem de calcul poate contine sute sau mii de componente individuale (circuite integrate, diode, rezistoare,...

Bazele Informaticii - Curs 1

I. SISTEME INFORMATICE I. 1. NOTIUNEA DE “SISTEM” În general, un sistem se defineste ca fiind un ansamblu de elemente fizice si logice...

Abordare aplicativă - sistemul de gestiune al bazelor de date Microsoft Access 2000

Concepte de bază Un sistem de baze de date: este un sistem computerizat de păstrare a înregistrărilor al cărui scop principal este să stocheze...

Te-ar putea interesa și

Software and Hardware Terminology în English and Difficulties of its Translation

Introduction We know that computer science is a power which controls the majority of the sciences. The computer science becomes much more...

Ai nevoie de altceva?