Академический Документы
Профессиональный Документы
Культура Документы
Agenda
3.1 Introduccin a los Autmatas finitos y expresiones regulares. 3.2 Analizador de lxico. 3.3 Manejo de localidades temporales de memoria (buffers). 3.4 Creacin de tablas de smbolos. 3.5 Manejo de errores lxicos. 3.6 Generadores de cdigo lxico: Lex y Flex.
Autmatas finitos
La caracterstica que tienen los autmatas finitos es que solo existe una funcin de transicin definida para un smbolo de entrada. Esto elimina ambigedades Una expresin regular es una forma abreviada de representar lenguajes: a Representa el lenguaje de las letras a a* Representa el lenguaje que tiene 0 hasta n as
Autmatas
Oprel <|>|<=|>=|=|<>
Expresin Regular
Generar la expresin regular para identificar correos electrnicos vlidos. Formato: jcolivar@itmorelia.edu.mx id@dominio
Gramtica de un if
prop if expr then prop | if expr then prop else prop | termino oprel termino | termino id | num
expr
termino
Gramtica de un if
oprel id num < |>|=|<=|<>|>=| letra (letra | digito)* digito+ (.digito+)?(E(+|-)?digito+)?
var, s1, letra (letra | suma, prom dgito | gb)* 2, 23, 5124 (dgito)+
Anlisis Lxico
El anlisis exploracin. lineal, se llama lxico o
Anlisis Lxico
+: signo de suma Velocidad: identificador *: signo de multiplicacin 60: numero
Se elimina todos los espacios en blancos (espacios, tabuladores, salto de lnea, etc.)
Anlisis Lxico
Reconocedores de identificadores y palabras clave La tabla de smbolo debe insertar y buscar componentes lxicos La tabla de smbolos es utilizada por el analizador sintctico y por otras fases del proceso de traduccin
Componente lxico Cdigo fuente Analizador Lxico Obtener siguiente componente lxico Analizador Sintctico
Tabla de smbolos
Anlisis lxico
Un patrn es una regla que describe el conjunto de lexemas que puede representar a un conjunto lxico Los componentes lxicos se tratan como terminales de la gramtica del lenguaje fuente La devolucin de un componente lxico se hace a travs de un nmero entero
Expresiones regulares
Se construyen a partir de otras expresiones regulares ms simples Cada expresin regular r, representa un lenguaje L(r) Letra a u b u c u u z Dgito 1 u 2 u 3 u u 0 Identificador letra(letra u dgito)*
Definiciones regulares
Dan nombres a las expresiones regulares Nos permiten referenciarlas recursivamente Digito 1|2|3|4|5|6|7|8|9|0 Entero dgito+ Decimal .dgito+ | .dgito+E(+|-| )dgito+ Real entero (decimal | )
Abreviaturas
* cero o ms casos + uno o ms casos [a-zA-Z] maysculas y minsculas [0-9] dgitos ? Cero o un caso
Abreviaturas
Digito [0-9] Entero digito+ Decimal .digito+exponente? Exponente (E|e) (+|-)?digito+ Real entero decimal?
Manejo de buffers
Existen muchas formas de dividir el trabajo, pero siempre se deber llevar dos punteros, uno al carcter actual y otro al inicial del lexema. El manejo de buffers es esencial para realizar el anlisis de grandes programas de mejor manera
Tabla de smbolos
La tabla de smbolos va a guardar cada palabra analizada, la va identificar como un lexema y le va asociar un identificador numrico para posteriormente utilizarlo. La tabla de smbolos debe estar en memoria para realizar un anlisis rpido.
Programa Lex
%{
Definiciones globales C
}%
Definiciones flex
%%
Acciones
%%
Cdigo C auxiliar
[\.]
Preguntas?