Descargar la presentación
La descarga está en progreso. Por favor, espere
1
UNIVERSIDAD LATINA (UNILA)
ANÁLISIS SINTÁCTICO LE, EI, Profesor Ramón Castro Liceaga
2
Sintaxis Sintaxis.- La sintaxis es un conjunto de reglas formales que especifican la composición de programas a partir de ciertas unidades de construcción (Caracteres). Semántica.- Especifica el significado de un programa sintácticamente válido escrito en el lenguaje, o es el resultado entendible de la sintaxis. La sintaxis.- Es la agrupa ción los tokens en estructuras sintácticas, muy similar a las oraciones aritmeticas. Para un lenguaje de programación bb * 12 consiste de tres tokens (bb, * y 12) y deben agruparse en una estructura denominada expresión. Mientras que, X1 := a + bb * 12; debe agruparse en una estructura llamada sentencia de asignación que contiene la subestructura expresión.
3
Análisis Léxico El analizador léxico crea tokens a partir de un character stream (cadena de caracteres) Los tokens se definen usando expresiones regulares Oscar Bonilla Universidad Galileo
4
Análisis semántico Toma como entrada el árbol de análisis gramatical creado en la fase de análisis sintáctico. Esta fase determina el significado (semántica) del programa mediante la creación de tablas de símbolos, verificando cuales de las variables utilizadas han sido definidas y una infinidad de otras tareas anteriores a la generación de código. Dos de las tareas principales en la fase del análisis semántico son: 1) la verificación estática del programa y 2) la generación de una representación intermedia (RI).
5
Análisis semántico Es La representación intermedia también denominada lenguaje intermedio o código intermedio (RI, LI p CI), es una forma alternativa para un árbol de análisis gramatical. A veces el analizador gramatical crea su representación intermedia en forma directa; y en ocasiones el árbol de este se convierte a la representación.
6
Expresiones Regulares, Gramáticas y Lenguajes
Una expresión regular puede ser escrita usando: Caracteres en el alfabeto o el código assii Operadores de expresiones regulares: ‘*’ ‘·’ ‘|’ ‘+’ ‘?’ ‘(‘ ‘)’ Ejemplo: (-| ε) ·(0|1|2|3|4|5|6|7|8|9)+ · (. ·(0|1|2|3|4|5|6|7|8|9)*)? Un lenguaje regular es un lenguaje definido por una expresión regular Oscar Bonilla Universidad Galileo
7
Función del Análisis Léxico
El analizador léxico crea tokens a partir de un character stream o cadena Los tokens se definen usando expresiones regulares Las expresiones regulares pueden mapearse a un Automata Finito No Determinístico (NFA) Por construcción simple NFA se transforma a un DFA Algoritmo de transformación Ejecutar un DFA es fácil Oscar Bonilla Universidad Galileo
8
Sintaxis y Semántica de un Lenguaje de Programación?
Como se ve un programa Representación textual o estructura Es posible una definición matemática precisa Un analizador sintáctico (o parser) es una de las partes de un compilador que transforma su entrada en un árbol de derivación. Semántica Cuál es el significado de un programa Es más difícil dar una definición matemática Oscar Bonilla Universidad Galileo
9
Por qué hacer análisis sintáctico?
Podemos proveer una definición precisa y fácil de entender Una gramática apropiada imparte estructura a un lenguaje de programación Podemos construir automáticamente un parser que determine si el programa es sintácticamente correcto Ayuda en el proceso de traducción Fácil modificar/añadir al lenguaje Oscar Bonilla Universidad Galileo
10
Anatomia de un Compilador
Programa (character stream) Analizador Léxico (Scanner) Token Stream Analizador Sintáctico (Parser) Arbol de Parseo Generador de Código Intermedio Representación Intermedia Optimizador de Código Representación Intermedia Optimizada Generador de Código Código en Assembler Oscar Bonilla Universidad Galileo
11
Entrada y Salida de un Parser
Token Stream Arbol de Parseo N1.- menos_op - ( N2.- Parentesis_izq_op Analizador Sintáctico (Parser) N3.- num(123.3) 123.3 ) N4.- mas_op N3.- num(23.6) + 23.6 N2.- Parentesis_der_op Oscar Bonilla
12
Arbol de Parseo Representación gráfica de la estructura parseada (análisis sintactico) Muestra la secuencia de derivaciones efectuada Nodos internos son no-terminales Hojas son terminales Cada nodo padre es el lado izquierdo (LHS) y los hijos son el lado derecho (RHS) de una producción Oscar Bonilla Universidad Galileo
13
Ejemplo de Derivación <expr> <expr> <op> <expr> num <op> <expr> num ‘*’ <expr> num ‘*’ ‘(‘ <expr> ‘)’ num ‘*’ ‘(‘ <expr> <op> <expr> ‘)’ num ‘*’ ‘(‘ num <op> <expr> ‘)’ num ‘*’ ‘(‘ num ‘+’ <expr> ‘)’ num ‘*’ ‘(‘ num ‘+’ num ‘)’ num ‘*’ ‘(‘ num ‘+’ num ‘)’ Oscar Bonilla Universidad Galileo
14
Ejemplo de Arbol de Parseo
<expr> Oscar Bonilla Universidad Galileo
15
Ejemplo de Arbol de Parseo
<expr> <expr> <op> <expr> <expr> <expr> <op> <expr> Oscar Bonilla Universidad Galileo
16
Ejemplo de Arbol de Parseo
<expr> num <expr> <expr> <op> <expr> num Oscar Bonilla Universidad Galileo
17
Ejemplo de Arbol de Parseo
<op> ‘*’ <expr> <expr> <op> <expr> num * Oscar Bonilla Universidad Galileo
18
Ejemplo de Arbol de Parseo
<expr> ‘(‘ <expr> ‘)’ <expr> <expr> <op> <expr> <expr> num * ( ) Oscar Bonilla Universidad Galileo
19
Ejemplo de Arbol de Parseo
<expr> <expr> <op> <expr> <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> Oscar Bonilla Universidad Galileo
20
Ejemplo de Arbol de Parseo
<expr> num <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num Oscar Bonilla Universidad Galileo
21
Ejemplo de Arbol de Parseo
<op> ‘+’ <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num + Oscar Bonilla Universidad Galileo
22
Ejemplo de Arbol de Parseo
<expr> num <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num num + Oscar Bonilla Universidad Galileo
23
Ejemplo de Arbol de Parseo
num ‘*’ ‘(‘ num ‘+’ num ‘)’ <expr> <expr> <op> <expr> <expr> num * ( ) <expr> <op> <expr> num num + Oscar Bonilla Universidad Galileo
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.