Documente Academic
Documente Profesional
Documente Cultură
Expresii regulate
George Daniel MITRA
8 ianuarie 2015
Rezumat
Tema const
a n familiarizarea cu generatorul de analizoare lexicale
FLEX (sau jflex) prin analiza s, i completarea unui schelet de cod (sau
reimplementarea lui pentreu cei ambit, ios, i).
Specificat, ii tem
a
1.1
Cerint,
a
Se d
a un program care cites, te expresii regulate n forma infixata s, i le afis, eaza
n forma prefixat
a. S
a se extinda funct, ionalitatea lui prin adaugarea a doi
operatori postfixat, i, + s, i ?.
1.2
1.2.1
Specificat, ii program
Intr
ari
Programul va citi dintr-un fis, ier numit input o expresie regulata n forma
infixat
a.
Se consider
a corect orice primes, te programul ca intrare.
1.2.2
Ies, iri
1.3
FLEX
2.1
Limbajul de descriere
2.2
2.2.1
Alfabet
S, ir
Un s, ir este o secvent,
a finit
a de simboluri. S, irul vid se noteaza cu e, n timp
ce alte s, iruri reprezint
a o concatenare de unul sau mai multe simboluri. Din
acest motiv, e nu se consider
a simbol, deci nu va face niciodata parte din niciun
alfabet.
<word> ::= e | ( <symbol> )+
Expresii Regulate(ER)
3.1
Descriere
3. , expresii regulate, este expresie regulata, reprezentand reuniunea limbajelor descrise de expresiile regulate s, i , L() = L()L();
4. , expresii regulate, este expresie regulata, reprezentand concatenarea limbajelor descrise de expresiile regulate s, i , L() = L() L();
5. expresie regulat
a, este expresie regulata, reprezentand aplicarea
operatorului Kleene Star limbajului descris de expresia regulata , L( ) =
L() ;
6. expresie regulat
a, () este expresie regulata. Parantezele cresc prioritatea operatorilor. Operatorii, ordonat, i de la prioritate maxima la minima
sunt: Kleene Star, operator de concatenare, operator de reuniune;
7. Orice altceva nu este expresie regulata.
Notat, ii ajut
atoare:
Fie o expresie regulat
a. Notam + = .
Fie o expresie regulat
a. Notam ? = ( e)
3.2
Specificat, ii
In tem
a, din cauza faptului c
a le folosim pentru a desemna elemente constitutive
expresiilor regulate, caracterele {|, , +, ?, O, e, (, )} nu pot face parte din niciun
alfabet. O expresie regulat
a se defines, te n felul urmator:
<RE> ::= <alphabet> : <expression>
<expression> ::= O | e | <symbol> | ( <expression> | <expression> ) | (
<expression> <expression> ) | ( <expression> * ) | ( <expression> + ) | (
<expression> ? ) | ( <expression> )
In tem
a, | reprezint
a reuniunea, O reprezinta expresia limbajului vid, e reprezint
a expresia limbajului care cont, ine doar s, irul vid.
Forma prefixat
a a unei expresii se reprezinta n felul urmator:
<PRE > ::= phi | epsilon | ( symbol <symbol> ) | ( union <expression>
( <expression> )+ )| ( concat <expression> ( <expression> )+ ) | ( kleene
<expression> ) | ( plus <expression> ) | ( optional <expression> )
In fis, ierul de intrare spat, iile pot fi ignorate. In fis, ierul de ies, ire, ele fiind
separatori ai operanzilor, trebuie sa apara. Reuniunea e reprezentata folosind
litera U, concatenarea folosind . Amandoi sunt operatori cu doi sau mai
mult, i parametri.
Punctaj
Sugestii
Inainte de a v
a uita pe cod, e recomandat sa citit, i sect, iunile Format of the
input files s, i Start conditions din manualul FLEX [2], respectiv Lexical
specification s, i A simple example... din manualul jflex [5].
C: Orientat, i-v
a dup
a cum sunt folosite constantele din expression.h pentru
celelalte tipuri de expresii. + s, i ? sunt foarte similare cu Kleene Star. Java:
Implementat, i clase pentru cei doi operatori care sunt unari postfixat, i. Seamana
foarte mult cu Kleene Star.
Bibliografie
[1] flex homepage
[2] Lexical Analysis with Flex
[3] Using flex
[4] jflex homepage
[5] jflex user manual
[6] jflex user manual in japanese
[7] Laborator 1 SO: Makefile