Lenguaje de programación
Notación formal para expresar algoritmos.
Compilador
Herramienta que permite construir programas.
Facilidades:
Edit (digitar programas)
Compile (traducir)
Interprete
Debuging (depurar)
Código máquina
Instrucciones en formato de 1 y 0.
Lenguaje ensamblador
Notación para representar programas en lenguaje máquina.
Lenguaje de bajo nivel
Instrucciones en lenguaje máquina (1/ 0)
Lenguaje de alto nivel
Instrucciones similares para expresar algoritmos.
Soporta expresiones, tipos de datos, declaraciones, abstracciones, etc.
Ver todo el resumen >>>
Syntax
Reglas para construir programas, define los símbolos.
Contextual constraints: Lo que se puede o no hacer.
: Reglas que indican si las frases están bien construidas.
Scope rules: Si la variable puede ser usada en un lugar determinado.
Binding ocurrence: momento en que se declara una variable.
Static binding: tipo debe ser declarado antes de usarse.
Dynamic binding: usa la variable en cualquier momento.
Aplied ocurrence: momento en que se utiliza una variable.
Typed rules: Si una expresión esta utilizando los tipos correctos.
Static typed: variable puede definirse sin ejecutar el programa.
Dynamic typed: variable se define al ejecutar el programa.
Semantics
Significado de las instrucciones, programas.
Context- free grammar
Especifica formalmente la sintaxis de un programa
Terminal symbols (reservados)
Símbolos usados para construir el programa (“<”, “while”, “(”, “void”) Non terminal symbols Clase particular de frases en un lenguaje Programa, comandos, expresiones, declaraciones. Start symbol Non terminal symbol que representa la clase principal en un lenguaje. Production rules Define cómo las frases se componen utilizando terminal symbols y subfrases.
Notación BNF (Backus- Naur Form)
Se utiliza para expresar production rules (N:=a)
Syntax trees
Muestran cómo se construyen las frases en un lenguaje.
Concrete Syntax tree
Especifica la sintaxis de una frase sin preocuparse por la semántica.
Termina en: 1- Terminal nodes, 2- Identificador, 3- Integer literal.
Abstract Syntax tree
Para entender más fácilmente la semántica, simplifica el árbol.
Compilación
Proceso de traducir un lenguaje de alto nivel a uno de bajo nivel.
1- Análisis sintáctico
Código fuente se analiza para determinar si se ajusta a la sintaxis del lenguaje.
Resultado= AST.
Scanning: El programa se transforma en tokens.
Parsing: El programa se analiza para determinar la estructura de las frases.
Representación: Montaje del árbol.
2- Análisis contextual
Revisa las restricciones de contexto.
Resultado= Decorated AST.
3- Generación de código
La parte más complicada es la declaración y uso de los identificadores
Compilador de 1 fase
Las tres fases anteriores se realizan al mismo tiempo.
Son rápidos pero más complejos.
Compilador multifase
Las tres fases anteriores se realizan por aparte.
Son más lentos pero de fácil mantenimiento.
Lleva a cabo todo el proceso, internamente usa una clase diferente para cada fase.
Clase Program
Representa el AST del programa, el resultado de cada fase se almacena en este objeto.
Clase Parser
Realiza el análisis sintáctico, internamente produce el AST.
Clase Checker
Toma el AST y revisa los contextual constraints.
Modifica el AST para agregar datos adicionales.
Produce el Decorated AST.
Clase Encoder
Genera el código una vez que ha sido verificado.
Tokens
Cada uno de los símbolos del código fuente.
Kind: Tipo (int type, left paren, op-less than, etc)
Spelling: “<”, “(”. Expresiones regulares
Reglas de cómo generar ciertas reglas de caracteres.
Se usa para simplificar la gramática de un lenguaje.
Acerca de:
El espacio para compartir material que necesitas en la carrera de Ingeniería de Sistemas y en tu vida profesional.
El objetivo del blog es ayudarte como estudiante a prepararte mejor para los exámenes, proyectos y demás situaciones que enfrentes durante la carrera. Asi mismo es una herramienta de consulta para los profesionales en TI.
Material y sugerencias: ingenierosTI@gmail.com
El objetivo del blog es ayudarte como estudiante a prepararte mejor para los exámenes, proyectos y demás situaciones que enfrentes durante la carrera. Asi mismo es una herramienta de consulta para los profesionales en TI.
Material y sugerencias: ingenierosTI@gmail.com
Mini triángulo
Clase Compilador