Want to create interactive content? It’s easy in Genially!
Get started free
Organizador gráfico Procesamiento léxico y sintáctico (lenguajes de programación)
Rogelio Servin Carbajal
Created on September 23, 2025
Start designing with a free template
Discover more than 1500 professional designs like these:
Transcript
Procesamiento sintáctico (Parsing)
Procesamiento léxico (Tokenización)
+ Info
Teoría gramatical
Análisis sintáctico (Parse + AST)
Organizador gráfico Procesamiento léxico y sintáctico (lenguajes de programación)
+ Info
Procesamiento léxico (Tokenización)
- Definición: Conversión de la secuencia de caracteres del código fuente en una lista de tokens.
- Características:
- Reconoce palabras clave, identificadores, literales, operadores y separadores.
- Elimina espacios en blanco y comentarios (normalmente).
- Se fundamenta en expresiones regulares y autómatas finitos.
- Ejemplos (tokens):
- Python: Código: y = x + 5
- Tokens: IDENT(y) ASSIGN(=) IDENT(x) PLUS(+) NUMBER(5).
- C: Código: int main() { return 0; }
- Tokens: KEYWORD(int) IDENT(main) LPAREN(() RPAREN()) LBRACE({) KEYWORD(return) NUMBER(0) SEMICOLON(;) RBRACE(}).
- C++: std::vector<int> v; → IDENT(std) :: IDENT(vector) < KEYWORD(int) > IDENT(v) ;.
- C#: Console.WriteLine("Hola"); → IDENT(Console) . IDENT(WriteLine) LPAREN STRING("Hola") RPAREN SEMICOLON.
Teoría gramatical
- Definición: Conjunto de reglas formales (gramáticas) que definen la sintaxis del lenguaje.
- Características:
- Se usan gramáticas libres de contexto (CFG) para la mayoría de lenguajes de programación.
- Se representan con BNF o EBNF: símbolos terminales y no terminales, reglas de producción.
- Ejemplos (reglas EBNF):
- Regla if_statement (estilo C):
- if_statement ::= 'if' '(' expression ')' statement.
- Regla for (simplificada, estilo Python):
- for_statement ::= 'for' IDENT 'in' expression ':' suite.
- Ejemplo en C#: if (x == 0) Console.WriteLine("zero"); cumple la regla anterior.
Procesamiento sintáctico (Parsing)
- Definición: Construcción de una estructura jerárquica (árbol de sintaxis o AST) a partir de los tokens, conforme a la gramática del lenguaje.
- Características:
- Verifica que la secuencia de tokens siga las reglas sintácticas.
- Produce un árbol de derivación o AST que representa la estructura del programa.
- Técnicas: análisis descendente (LL) y ascendente (LR); uso de generadores de parsers (yacc, bison, ANTLR).
- Ejemplos (árbol/estructura):
- C++: Código: if (a > b) { cout << a; }
- Estructura: IfStatement → Condition: (a > b) ; Body: { ExpressionStatement(cout << a) }.
- Python: Código: for i in range(5): print(i) → AST con nodo For(target=i, iter=Call(range, 5), body=[Call(print, i)]).
Análisis sintáctico (Parse + AST)
- Definición: Ejecución práctica de la teoría: construir el árbol, comprobar precedencia/asociatividad, y preparar para fases semánticas.
- Características:
- Maneja precedencia de operadores (p.ej., * antes que +).
- Detecta y reporta errores de sintaxis; puede incluir estrategias de recuperación.
- Genera un AST que se usa en generación de código, optimización o interpretación.
- Ejemplos:
- Expresión con precedencia (Python/C/C++): a + b * c → árbol donde * es hijo de la suma: (+ a (* b c)).
- C (función simple): int add(int a, int b) { return a + b; } → AST con nodo FunctionDef(name=add, params=[a,b], body=[Return(a + b)]).