Compiladores de una sola pasada
Clasificado en Informática
Escrito el en español con un tamaño de 8,9 KB
Un compilador cruzado es un compilador capaz de crear código ejecutable para otra plataforma distinta a aquélla en la que él se ejecuta. Esta herramienta es útil cuando quiere compilarse código para una plataforma a la que no se tiene acceso, o cuando es incómodo o imposible compilar en dicha plataforma (como en el caso de los sistemas embebidos).
Un ejemplo de un compilador con estas posibilidades es el NASM, que puede ensamblar, entre otro formatos, ELF (para sistemas UNIX) y COM (para DOS).
Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.
Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.
Algunos ejemplos típicos de lenguajes compilados:
La familia de lenguajes de C, incluyendo C++ y Objective C pero no Java.
Ada, Pascal (incluyendo su dialecto Delphi)
Los lenguajes que suelen ser interpretados más famosos en la actualidad son (en orden alfabético):
- ActionScript
- ASP (hasta la versión 3)
- Basic4GL (Basic para OpenGL. Permite generar ejecutables Windows completos)
- BeanShell (Java en lenguaje de Scripts)
- Inform
- IO (es un lenguaje reciente -2002-)
- JavaScript (todas las plataformas)
- Logo (Linux, Windows y Mac)
- Lenguaje de programación R
- Lisp
- Lua
- Lush (Lisp para gráficos Linux)
- NWNScript (empleado en el videojuego Neverwinter Nights y Neverwinter Nights 2
- Pike (es el más rápido de todos, al estar escrito en gran parte en código nativo)
- REXX y variantes como Object REXX (todas las plataformas, en especial: OS/2 / AmigaOS)
- Tcl
- VBScript (Microsoft Windows)
Una gramática sensible al contexto es una gramática formal G = (N, Σ, P, S) tal que todas las producciones P son de la forma:
- αAβ → αγβ
con A en N y α y β en (N U Σ)* y γ en (N U Σ)+, con la posibilidad de la regla lambda
- S → λ
con λ, la cadena vacía.
Se lo llama sensible al contexto porque α y β determinan la forma que debe tener una cadena que puede ser reemplazada por alguna de las producciones. Una lenguaje formal que puede ser descripto para una gramática sensible al contexto se llama lenguaje sensible al contexto