2.5. Reconocimiento de los Componentes Léxicos

 

En esta sección, se estudia el reconocimiento de los componentes léxicos y se utiliza como ejemplo el lenguaje generado por la siguiente gramática.

                                                         prop -> if expr then prop

                                                     | if expr then prop else prop

                                                                           |Є

                                                     expr -> término oprel término

                                                                        | término

                                                                   término -> id

                                                                         | núm

donde los terminales if, then, else, oprel, id y núm generan conjuntos de cadenas dados por las siguientes definiciones regulares:

                                                                            if -> if

                                                                      then -> then

                                                                      else -> else

                                                oprel ->  < | <= | = | <> | > | >=

                                                  id -> letra ( letra | digito )*

                   núm-> digito+( . dígito+)? (E( + | - )? dígito+ .. )?

donde letra y dígito se han definido anteriormente.

Para este fragmento de lenguaje, el analizador léxico reconocerá las palabras clave if, then, else,  al igual que los lexemas representados por oprel, id y núm. Para simplificar las cosas, se supone que las palabras clave son reservadas; es decir, no se pueden usar como identificadores, núm representa los números enteros y reales sin signo de Pascal.

Además, se supone que los lexemas están separados por espacio en blanco, formados por secuencias no nulas de espacios en blanco, caracteres TAB y caracteres de nueva línea. El analizador léxico eliminará los espacios en blanco. Esto lo hará comparando una cadena con la definición de la expresión regular eb siguiente.

                                                  delim -> blanco | tab | lineanueva

                                                                    eb -> delim+

Si se encuentra una concordancia para eb, el analizador léxico no devuelve un componente léxico al analizador sintáctico, sino que se dispone a encontrar un componente léxico a continuación del espacio en blanco y lo devuelve al analizador sintáctico.

El objetivo es construir un analizador léxico que aislé el lexema para el siguiente componente Léxico del buffer de entrada y que produzca como salida un par formado por el componente léxico apropiado y el valor de atributo, utilizando la tabla de traducción mostrada a continuación. Los valores de atributo para los operadores relacionales están dados por las constantes simbólicas MEN, MEI, IGU, MAY, MAI.

                                           Expresion