1. Semántica
1.1. significado de expresiones y sentencias
2. Compilación
2.1. Análisis del programa fuente
2.2. Análisis léxico
2.3. Análisis sintáctico
2.4. Análisis semántico
2.5. Tabla de símbolos
2.6. Síntesis del programa objeto
2.7. Generación de código
2.8. Programa objeto
3. Interpretación
3.1. Compiladores
3.2. Intérpretes
4. Nombre
4.1. Identificador
4.2. Aspectos de diseño
5. Variables
5.1. - Nombre - Direccion - Valor - Tipo - Tiempo de vida - Ámbito
5.2. Estáticas
5.2.1. Ligadas antes de la ejecución
5.3. Dinámicas de Stack
5.3.1. Ligadas a la memoria en el momento que la ejecución alcanza el código asociado
5.4. Dinámicas de Heap
5.4.1. La memoria se libera y se asigna de forma explícita por el programador
6. Tipos de Datos
6.1. Ordinales
6.1.1. Primitivos
6.1.2. Definidos por el usuario
6.2. Representación de números
6.2.1. - Enteros - De punto fijo - De punto flotante
6.3. Enumerado
6.3.1. Se enumeran los posibles valores con constantes literales
6.4. Subrango
6.4.1. Subsecuencia contigua de un tipo ordinal
6.5. Primitivos
6.5.1. Numérico
6.5.2. Booleano
6.5.3. Caracter
6.6. Estructurados
6.6.1. Arreglos
6.6.1.1. Multidimensionales
6.6.1.2. Asociativos
6.7. Registro
6.7.1. Permite composición heterogénea
6.8. Puntero
6.8.1. Su valor corresponde a una dirección de memoria.
7. Sintaxis
7.1. Conjunto de reglas que forman instrucciones válidas en un lenguaje
7.2. - Conjunto de caracteres - Identificadores - Símbolos de operadores - Palabras claves y reservadas - Comentarios - Espacios, delimitadores - Expresiones
8. Gramática
8.1. Conjunto de reglas que forman programas permisibles en el lenguaje usado.
8.2. BNF
8.2.1. - Símbolos no terminales - Símbolos terminales - Símbolo de partida
8.3. EBNF
8.3.1. - Elemento opcional: [...] - Se puede usar | como regla - Repetición de elementos: {...}
9. Dirección de una variable
9.1. Un nombre puede ser asociado con diferentes direcciones en diferentes partes de un programa
10. Ligado
10.1. Asociación de un atributo a una entidad del lenguaje
10.2. Estático
10.3. Dinámico
11. Verificación de tipo
11.1. Tipificado Fuerte
11.1.1. Permite detectar siempre los errores de tipo - Cada nombre debe ser ligado estáticamente a un tipo