Está en la página 1de 5

Compiladores e Intérpretes EPICI - UNPRG

Asignatura de
COMPILADORES e INTÉRPRETES

MÓDULO 4: TRANSFORMACIÓN DE DEFINICIONES


REGULARES (DR.) A GRAMÁTICAS

AUTOR: M.Sc. Ing. Luis Alberto Reyes Lescano

Escuela Profesional de Ingeniería de


Computación e Informática.
Universidad Nacional Pedro Ruiz Gallo.
Lambayeque – Perú

@ V.2020 - 2021

M.Sc. Ing. Luis Alberto Reyes Lescano 1


Compiladores e Intérpretes EPICI - UNPRG

TRA NSFORMACIÓN DE D.R. A GRAMÁ TICAS

Sea la ER|DR a*={ε,a,aa,…}.


Su gramática equivalente es:
S ε|aS

Su lenguaje asociado se halla en base a derivaciones (reemplazar el lado izquierdo de la regla por el
derecho)
S ε
S aS aε=a
S aS aaS aaε=aa
.
.
.
L(S)={ε,a,aa,aaa,...}

Sea la ER|DR a+={a,aa,aaa,…}


Su gramática equivalente es:
S a|aS

Lenguaje Asociado

S a
S aS aa
S aS aaS aaaS aaaε aaa
:
.

L(S)={a,aa,aaa,aaaa,...}

Ejercicios.
Encontrar su gra matica equivalente a los siguientes DR:

1. Digito :
DR: digito 0|1|2|3|4|…|9
GR: digito 0|1|2|3|4|…|9

2. Numero entero:
DR: entero digito+
GR: entero digito | digito entero

3. Numero real:
DR: real digito+ .digito+
GR: p_ent digito | digito p_ent
p_dec digito | digito p_dec
real p_ent . p_dec (axioma)

Encontrar el lenguaje asociado de las siguientes gramaticas:

1. Digito:
digito 0
digito 1
digito 2
.
.
.
L(digito)={0,1,2,3,4,…,9}

M.Sc. Ing. Luis Alberto Reyes Lescano 2


Compiladores e Intérpretes EPICI - UNPRG

2. Nu mero entero:
entero digito 0|1|2|3|…|9
entero digito entero digito digito (0|1|2|3|…|9)( 0|1|2|3|…|9)
.
.
.
L(entero) {0,1,2,…,99,00,…,99,000,…}

3. Nu mero real:
real p_ent . p_dec digito .p_dec digito .digito (0|1|2|3|…|9).( 0|1|2|3|…|9)

real p_ent . p_dec digito p_ent.p_dec digito digito .p_dec digito digito
.digito
(0|1|2|3|…|9)( 0|1|2|3|…|9).(0|1|2|3|…|9)

real p_ent . p_dec digito p_ent.p_dec digito digito . p_dec


digito digito.digito p_dec digito digito .digito digito
(0|1|2|3|…|9)( 0|1|2|3|…|9).(0| 1|2|3|…|9) (0|1|2|3|…|9)
.
.
.
L(real) {0.0,0.1,0.2,…,0.9,1.0,…,9.9,00.0,…}

4. Identificador:
DR: id letra (letra|digito|_)*
GR: id letra S
S (letra|digito|_) S|ε
LA: id letra S letra ε letra (A|B|…|z)
Id letra S letra letra S letra letra ε letra letra (A|B|…|z)
(A|B|…|z)
Id letra S letra digito S letra digito ε letra digito
(A|B|…|z)(0|1|…|9)
.
.
.
L(id) {A,…,AA,…,A0,B0,…}

5. Nu mero en notación científica


DR: NNC (+|-)? digito+ . digito+ E (+|-)? digito+
GR: NNC signo real E signo entero
signo +|-|ε
real p_ent . p_dec
p_ent digito | digito p_ent
p_dec digito | digito p_dec
entero digito | digito entero

LA: NC signo real E signo entero


signo p_ent.p_dec E signo entero
signo digito.p_dec E signo entero
signo digito.digito E signo entero
signo digito.digito E signo digito
(+|-|ε) (0|1|…|9).(0|1|…|9) E (+| -|ε) (0|1|…|9)

M.Sc. Ing. Luis Alberto Reyes Lescano 3


Compiladores e Intérpretes EPICI - UNPRG

NC signo real E signo entero


signo p_ent.p_dec E signo entero
signo digito p_ent.p_dec E signo entero
signo digito digito .p_dec E signo entero
signo digito digito . digito E signo entero
signo digito digito . digito E signo digito
(+|-|ε) (0|1|…|9) (0|1|…|9). (0|1|…|9) E (+| -|ε) (0|1|…|9)

6. Nu mero entero real y en notación científica, todo al mismo tiempo


DR: NC (+|-)? digito+ (. digito+)? (E (+|-)? digito+ )?
GR: NC signo base eleva ción
signo +|-|ε
base p_ent (.pdec | ε)
p_ent digito | digito p_ent
p_dec digito | digito p_dec
elevación E signo entero | ε
entero digito | digito entero

LA: NC signo base eleva ción


signo p_ent ε elevación
signo p_ent elevación
signo digito elevación
signo digito ε
(+|-|ε) (0|1|…|9)
NC signo base eleva ción
signo p_ent . p_dec elevación
signo digito . p_dec elevación
signo digito . digito elevación
signo digito . digito E signo entero
signo digito . digito E signo digito
(+|-|ε) (0|1|…|9) . (0|1|…|9) E (+| -|ε) (0|1|…|9)

7. Cadena de caracteres
DR: cad “(letra | digito | carac_esp | delimit)*”
GR: cad S
S ε | (letra | digito | carac_esp | delimit) S
LA: cad “S”
“letra S”
“letra ε”
“letra”
“(A|B|…|Z|a|b|…|z)”
cad “S”
“letra S”
“letra letra S”
“letra letra digito S”
“letra letra digito ε”
“letra letra digito”
“(A|B|…|Z|a|b|…|z) (A|B|…|Z|a|b|…|z) (0|1|…|9)”

M.Sc. Ing. Luis Alberto Reyes Lescano 4


Compiladores e Intérpretes EPICI - UNPRG

EJERCICIOS:
Desarrollar las gra mát icas equivalentes a las siguientes ER y hallar sus lenguajes
asocia dos.
1. ((a|b*)*a|b)b* sobre ∑={a,b}
GR: S ε|bS
S2 ε | (a|S) S2
S3 (S2 a | b) S
Prp S3
LA: Prp S3 S2 a S εaS aS aε a
Prp S3 S2 a S εaS abS abε ab
Prp S3 bS bbS bbbS bbbε bbb

2. ((0*|1+)*|0*|1+)*01 sobre ∑={0,1}


GR: S ε|0S
S2 1 | 1 S2
S3 ε | (S | S2) S3
S4 ε | (S3 | S | S2) S4
Prp S401
LA: Prp S401 ε01 01
Prp S401 SS401 0SS401 0εS401 0S401 0ε01
001
Prp S401 SS401 0SS401 0εS401 0S401 0S2S401
01S401 01ε01 0101

3. ((ab+|cd*)*|ab*|cd)*abcd*|ab* sobre ∑={ab,cd}

GR: A ab|ab A
B ε|cd B
C ε|ab C
D ε|(A|B)D
S (ε|(D|A|B) S)abB|A
Prp S

LA: Prp S εabB abB abcdB abcdε abcd


Prp S εabB abB abcdB abcdcdB abcdcdε
abcdcd
Prp S BS cdBS cdεS cdA cdabA cdabab

4. ((m*n*y *z)*|y *z*|ny*)*mn* sobre ∑={m,n,y,z}

GR: A ε|m A
B ε|n B
C ε|y C
D ε|z D
E ε|(ABCz)E
F ε|(E|CD|nD)F
Prp FmB
LA: Prp FmB εmB mB mε m
Prp FmB CDFmB yCDFmB yεDFmB yz DFmB yzεFmB
yzFmB yzεmB yzmnB yzmnε yzmn
Prp FmB nDmB nzDmB nzεmB nzmnB nzmnε
nzmn

M.Sc. Ing. Luis Alberto Reyes Lescano 5

También podría gustarte