You are on page 1of 28

UNIVERSIDAD DE CRDOBA

ESCUELA POLITCNICA SUPERIOR


DEPARTAMENTO DE INFORMTICA Y ANLISIS NUMRICO

PROCESADORES DE LENGUAJES
INGENIERA INFORMTICA
PRIMER CURSO DE SEGUNDO CICLO
SEGUNDO CUATRIMESTRE

NOTACIN EBNF de ANTLR

Notacin EBNF de ANTLR

Operadores
Reglas

Notacin EBNF de ANTLR

Operadores
Reglas

Notacin EBNF de ANTLR

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')
4

Notacin EBNF de ANTLR

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 ANTLR

Operadores
o ~ : negacin (complementario)

Ejemplo:
~ ( '\n' | '\r' )

cualquiera carcter que no sea '\n' o '\r'

Notacin EBNF de ANTLR

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
*/
7

Notacin EBNF de ANTLR

Operadores
Reglas

Notacin EBNF de ANTLR

Reglas
Sintaxis de las reglas
Observaciones
Tipos de reglas

Notacin EBNF de ANTLR

Reglas
Sintaxis de las reglas
nombre : cuerpo
;

10

Notacin EBNF de ANTLR

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

Notacin EBNF de ANTLR

Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin

12

Notacin EBNF de ANTLR

Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin

13

Notacin EBNF de ANTLR

Reglas
o Enumeraciones
Sintaxis
nombre : dato_1
[ dato_2

dato_n ] // Opcional
;
nombre : dato_1 [ dato_2 dato_n ]
;
14

Notacin EBNF de ANTLR

Reglas
o Enumeraciones
Ejemplos
PUNTO_COMA: ';'
;
OP_MAYOR_IGUAL: >=
;
condicin: expresin OP_MAYOR_IGUAL expresin
;

15

Notacin EBNF de ANTLR

Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin

16

Notacin EBNF de ANTLR

Reglas
o Alternativas
Sintaxis
nombre : opcin 1
| opcin 2
|
|opcin n
;
nombre : opcin 1 | opcin 2 | |opcin n
;
17

Notacin EBNF de ANTLR

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

Notacin EBNF de ANTLR

Reglas
o Alternativas
Ejemplos
CARCTER: BLANCO
| CIFRA
| LETRA
;
instruccin: asignacin
| sentencia_condicional
| bucle_mientras
;
19

Notacin EBNF de ANTLR

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

Notacin EBNF de ANTLR

Reglas
oTipos de reglas
Enumeraciones
Alternativas
Reglas de repeticin

21

Notacin EBNF de ANTLR

Reglas
o Reglas de repeticin
Reglas recursivas por la derecha
Reglas con operadores de repeticin

22

Notacin EBNF de ANTLR

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


23

Notacin EBNF de ANTLR

Reglas
o Reglas de repeticin
Reglas recursivas por la derecha
Ejemplo 2
expresin: sumando

factor: NMERO

| sumando '+' expresin

| IDENTIFICADOR

sumando: factor
| factor '*' sumando
;
24

Notacin EBNF de ANTLR

Reglas
o Reglas de repeticin
Observacin
ANTLR no admite reglas recursivas por la
izquierda
lista: resto IDENTIFICADOR
;
resto: resto IDENTIFICADOR ','
|

// alternativa nula: palabra vaca

;
25

Notacin EBNF de ANTLR

Reglas
o Reglas de repeticin
Reglas con operadores de repeticin
Ejemplo 1
declaracion: tipo lista PUNTO_COMA
;
lista: IDENTIFICADOR (',' IDENTIFICADOR) *
;

26

Notacin EBNF de ANTLR

Reglas
o Reglas de repeticin
Reglas con operadores de repeticin
Ejemplo 2
expresion: sumando ( '+' expresion) *
;
sumando: factor ('*' sumando) *
;
factor: NMERO
| IDENTIFICADOR
;

27

MUCHAS GRACIAS

You might also like