EBNF
-
Upload
jorgeaguero -
Category
Documents
-
view
4 -
download
1
description
Transcript of EBNF
-
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