28
PROCESADORES DE LENGUAJES PROCESADORES DE LENGUAJES INGENIERÍA INFORMÁTICA PRIMER CURSO DE SEGUNDO CICLO SEGUNDO CUATRIMESTRE UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO NOTACIÓN EBNF de ANTLR NOTACIÓN EBNF de ANTLR

EBNF

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