Upload
jorgeaguero
View
4
Download
1
Embed Size (px)
DESCRIPTION
plpp
Citation preview
PROCESADORES DE LENGUAJESPROCESADORES DE LENGUAJESINGENIERA INFORMTICA
PRIMER CURSO DE SEGUNDO CICLO
SEGUNDO CUATRIMESTRE
UNIVERSIDAD DE CRDOBA
ESCUELA POLITCNICA SUPERIOR
DEPARTAMENTO DE INFORMTICA Y ANLISIS NUMRICO
NOTACIN EBNF de ANTLRNOTACIN EBNF de ANTLR
2 Operadores
Reglas
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
3 Operadores
Reglas
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
4 Operadores
o ' ': delimitador de un carcter Ejemplos: 'a' , '0', ' ', '\n'
o : delimitador de cadenas de caracteres Ejemplos: >=, ++
o |: alternativa: Ejemplo: 'a' | 'b'
o ( ): delimitadores de agrupamiento Ejemplo:
('0' | '1' | '2' | '3' | '4'| '5' | '6' | '7'| '8' | '9')
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
5 Operadores
o .. : rango Ejemplo: '0' .. '9'
o ? : opcional (cero o una vez) Ejemplo: ('0' .. '9')?
o * : repeticin cero o ms veces Ejemplo: ('0' .. '9')*
o +: repeticin 1 o ms veces Ejemplo: ('0' .. '9')+
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
6 Operadores
o ~ : negacin (complementario) Ejemplo:
~ ( '\n' | '\r' )
cualquiera carcter que no sea '\n' o '\r'
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
7 Operadores
o // : comentario de una lnea Ejemplo
// Ejemplo maravillo de comentario de una lnea
o /* */: comentario de una o varias lneas Ejemplo
/*
Ejemplo maravillo de comentario
de varias lneas
*/
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
8 Operadores
Reglas
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
9 Reglas
Sintaxis de las reglas
Observaciones
Tipos de reglas
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
10
Reglas
Sintaxis de las reglas
nombre : cuerpo
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
11
Reglas
Observaciones
El analizador lxico (lexer) exige que el nombrecomience por una letra mayscula
Ejemplo: IDENTIFICADOR :
;
El analizador sintctico (parser) exige que elnombre comience por una letra minscula
Ejemplo: programa:
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
12
Reglas
oTipos de reglas Enumeraciones
Alternativas
Reglas de repeticin
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
13
Reglas
oTipos de reglas Enumeraciones
Alternativas
Reglas de repeticin
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
14
Reglas
o Enumeraciones Sintaxis
nombre : dato_1
[ dato_2
dato_n ] // Opcional
;
nombre : dato_1 [ dato_2 dato_n ]
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
15
Reglas
o Enumeraciones Ejemplos
PUNTO_COMA: ';'
;
OP_MAYOR_IGUAL: >=
;
condicin: expresin OP_MAYOR_IGUAL expresin
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
16
Reglas
oTipos de reglas Enumeraciones
Alternativas
Reglas de repeticin
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
17
Reglas
o Alternativas Sintaxis
nombre : opcin 1
| opcin 2
|
|opcin n
;
nombre : opcin 1 | opcin 2 | |opcin n
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
18
Reglas
o Alternativas Ejemplos
BLANCO : ' ' | '\t' | ' \n'
;
CIFRA: '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
;
LETRA: 'a' | 'b' | | 'z' | 'A' | 'B' | | 'Z'
;
CARCTER: BLANCO | CIFRA | LETRA
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
19
Reglas
o Alternativas EjemplosCARCTER: BLANCO
| CIFRA
| LETRA
;
instruccin: asignacin
| sentencia_condicional
| bucle_mientras
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
20
Reglas
o Alternativas Observacin
No puede haber alternativas con prefijoscomunes
Se debe factorizar por la izquierda
Se puede utilizar el parmetro de lookaheadk:
k = n;
permite que haya prefijos con n smboloscomunes
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
21
Reglas
oTipos de reglas Enumeraciones
Alternativas
Reglas de repeticin
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
22
Reglas
o Reglas de repeticin Reglas recursivas por la derecha
Reglas con operadores de repeticin
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
23
Reglas
o Reglas de repeticin Reglas recursivas por la derecha
Ejemplo 1
declaracin: tipo lista PUNTO_COMA
;
lista: IDENTIFICADOR resto
;
resto: ',' IDENTIFICADOR resto
| // alternativa nula: palabra vaca
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
24
Reglas
o Reglas de repeticin Reglas recursivas por la derecha
Ejemplo 2
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
expresin: sumando
| sumando '+' expresin
;
sumando: factor
| factor '*' sumando
;
factor: NMERO
| IDENTIFICADOR
;
25
Reglas
o Reglas de repeticin Observacin
ANTLR no admite reglas recursivas por laizquierda
lista: resto IDENTIFICADOR
;
resto: resto IDENTIFICADOR ','
| // alternativa nula: palabra vaca
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
26
Reglas
o Reglas de repeticin Reglas con operadores de repeticin
Ejemplo 1
declaracion: tipo lista PUNTO_COMA
;
lista: IDENTIFICADOR (',' IDENTIFICADOR) *
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
27
Reglas
o Reglas de repeticin Reglas con operadores de repeticin
Ejemplo 2
expresion: sumando ( '+' expresion) *
;
sumando: factor ('*' sumando) *
;
factor: NMERO
| IDENTIFICADOR
;
Notacin EBNF de ANTLRNotacin EBNF de ANTLR
MUCHAS GRACIASMUCHAS GRACIAS