Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PROCESADORES DE LENGUAJES
INGENIERA INFORMTICA
PRIMER CURSO DE SEGUNDO CICLO
SEGUNDO CUATRIMESTRE
Operadores
Reglas
Operadores
Reglas
Operadores
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
Operadores
o ~ : negacin (complementario)
Ejemplo:
~ ( '\n' | '\r' )
Operadores
o // : comentario de una lnea
Ejemplo
// Ejemplo maravillo de comentario de una lnea
o
Ejemplo
/*
Ejemplo maravillo de comentario
de varias lneas
*/
7
Operadores
Reglas
Reglas
Sintaxis de las reglas
Observaciones
Tipos de reglas
Reglas
Sintaxis de las reglas
nombre : cuerpo
;
10
Reglas
Observaciones
El analizador lxico (lexer) exige que el nombre
comience por una letra mayscula
Ejemplo: IDENTIFICADOR :
;
El analizador sintctico (parser) exige que el
nombre comience por una letra minscula
Ejemplo: programa:
;
11
Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin
12
Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin
13
Reglas
o Enumeraciones
Sintaxis
nombre : dato_1
[ dato_2
dato_n ] // Opcional
;
nombre : dato_1 [ dato_2 dato_n ]
;
14
Reglas
o Enumeraciones
Ejemplos
PUNTO_COMA: ';'
;
OP_MAYOR_IGUAL: >=
;
condicin: expresin OP_MAYOR_IGUAL expresin
;
15
Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin
16
Reglas
o Alternativas
Sintaxis
nombre : opcin 1
| opcin 2
|
|opcin n
;
nombre : opcin 1 | opcin 2 | |opcin n
;
17
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
;
18
Reglas
o Alternativas
Ejemplos
CARCTER: BLANCO
| CIFRA
| LETRA
;
instruccin: asignacin
| sentencia_condicional
| bucle_mientras
;
19
Reglas
o Alternativas
Observacin
No puede haber alternativas con prefijos
comunes
Se debe factorizar por la izquierda
Se puede utilizar el parmetro de lookahead
k:
k = n;
permite que haya prefijos con n smbolos
comunes
20
Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin
21
Reglas
o Reglas de repeticin
Reglas recursivas por la derecha
Reglas con operadores de repeticin
22
Reglas
o Reglas de repeticin
Reglas recursivas por la derecha
Ejemplo 1
declaracin: tipo lista PUNTO_COMA
;
lista: IDENTIFICADOR resto
;
resto: ',' IDENTIFICADOR resto
|
;
Reglas
o Reglas de repeticin
Reglas recursivas por la derecha
Ejemplo 2
expresin: sumando
factor: NMERO
| IDENTIFICADOR
sumando: factor
| factor '*' sumando
;
24
Reglas
o Reglas de repeticin
Observacin
ANTLR no admite reglas recursivas por la
izquierda
lista: resto IDENTIFICADOR
;
resto: resto IDENTIFICADOR ','
|
;
25
Reglas
o Reglas de repeticin
Reglas con operadores de repeticin
Ejemplo 1
declaracion: tipo lista PUNTO_COMA
;
lista: IDENTIFICADOR (',' IDENTIFICADOR) *
;
26
Reglas
o Reglas de repeticin
Reglas con operadores de repeticin
Ejemplo 2
expresion: sumando ( '+' expresion) *
;
sumando: factor ('*' sumando) *
;
factor: NMERO
| IDENTIFICADOR
;
27
MUCHAS GRACIAS