Compilador Diseo - Expresiones Regulares



El analizador lxico debe analizar e identificar slo un conjunto finito de cadena vlida/token/lexeme que pertenecen al lenguaje de la mano. Busca el modelo definido por las normas del lenguaje.

Las expresiones regulares tienen la capacidad de expresar finito idiomas definiendo un modelo finito de cadenas de smbolos. La gramtica definida por las expresiones regulares es conocido como gramtica regular. El idioma definido por gramtica regular se conoce como idioma habitual.

Expresin regular es una notacin para importante especificacin de patrones. Cada patrn coincide con un conjunto de cadenas, de modo que las expresiones regulares como nombres para un conjunto de cadenas. Fichas lenguaje de programacin puede ser descrita por los idiomas. La especificacin de las expresiones regulares es un ejemplo de una definicin recursiva. Lenguajes regulares son fciles de comprender y tener eficacia en su aplicacin.

Hay una serie de leyes algebraicas que son obedecidas por las expresiones regulares, que puede ser usado para manipular las expresiones regulares en formas equivalentes.

Operaciones

Las diferentes operaciones sobre los idiomas disponibles son:

  • Unin de dos idiomas L y M se escribe como

    L U M = {s | s en L o s es en M}

  • La concatenacin de dos lenguajes L y M se escribe como

    LM = {st | s es en L y t se encuentra en M}

  • La clausura de Kleene un lenguaje L es escrito como

    L* = cero o ms apariciones del lenguaje L.

Anotaciones

Si r y s son expresiones regulares denotando las lenguas L(r) y L(s), a continuacin,

  • Unin: (r) | (s) es una expresin regular que denota L(r) U L(s)

  • Concatenacin: (r)(s) es una expresin regular que denota L(r)L(s)

  • Cierre Kleene : (R)* es una expresin regular que denota (L(r))*

  • (R) es una expresin regular que denota L(r)

Precedencia y asociatividad

  • *, La concatenacin (.), y | (pipe) son asociativo
  • * Tiene la mayor prioridad
  • La concatenacin (.) tiene la segunda mayor prioridad.
  • | (Pipe) tiene la menor prioridad de todos.

Tokens vlidos representan una lengua en expresiones regulares

Si x es una expresin regular, entonces:

  • X * significa cero o ms apariciones de x.

    Es decir, puede generar { e, x, xx, xxx, xxxx, ... }

  • X+ significa una o ms apariciones de x.

    Es decir, puede generar { x, xx, xxx, xxxx ... } o x.x*

  • X? Medios de una ocurrencia ms de x

    Es decir, se puede generar un {x} o {e}.

  • [A-z] es todo en maysculas y minsculas del alfabeto ingls.

    [A-Z] maysculas alfabetos de idioma ingls.

    [ 0-9] es natural dgitos utilizados en matemticas.

De aparicin de smbolos mediante expresiones regulares

Letra = [a - z] o [A - Z]

Dgito = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 o [ 0-9]

Signo = [ + | - ]

Fichas de idioma usando expresiones regulares

Decimal = (signo)?(dgito)+

Identificador = (carta) (letra | digit) *

El nico problema con el analizador lxico es la forma de verificar la validez de una expresin regular que se utiliza para especificar los patrones de palabras clave de un lenguaje. Una solucin es utilizar autmatas finitos para verificacin.

Advertisements