Aquí hay un bosquejo de alto nivel muy tosco:
La especificación del idioma:
- Una gramática
- Una especificación de la semántica de cada construcción en la gramática.
Tipos de construcciones a menudo especificadas como parte de un lenguaje:
- ¿Debo controlar la velocidad del ventilador o el reloj / voltaje de la CPU para extender la vida útil de una CPU?
- ¿Cuáles son las características para Pentium 4 y Core 2 Duo?
- ¿Son estas nuevas computadoras cuánticas realmente cuánticas?
- ¿Cuál es la computadora con Windows más poderosa del mundo?
- ¿Cuál es mejor i7 7500U o i7 6700HQ?
- Expresiones, como referencias variables, llamadas a funciones, operaciones aritméticas, números
- Declaraciones: como asignaciones variables y bloques de cambio o if / else en la mayoría de los idiomas
- Definiciones / declaraciones de funciones, variables, etc.
- Módulos y espacios de nombres
- Tipos, firmas / contratos / interfaces
- Clases y objetos
Software que le permite ejecutar programas en el idioma: todos los idiomas incluyen algunas de estas partes, pero quizás no todas:
- Lexer y analizador – para programas de lectura
- Comprobador de tipos: solo para idiomas de tipo estático
- Intérprete o VM: ejecuta programas en el idioma
- Compilador: traduce un idioma a otro
- Entorno de tiempo de ejecución: el contexto para ejecutar programas en el intérprete o VM
- Recolector de basura
Datos sobre los que operan los programas anteriores:
- Árboles de sintaxis abstracta
- Ambientes
- Datos del programa
- Tipos
- Pila de llamadas y montón de datos
- Continuaciones
- Cosas a nivel del sistema operativo como hilos y controladores de archivos
Dos buenos libros para aprender más:
- Fundamentos de los lenguajes de programación , por Friedman et al.
- Lenguajes de programación: aplicación e interpretación , por Krishnamurthi.