Lenguajes formales
Son representaciones abstractas de procesos que sirven para analizar su comportamiento. Tienen reglas estrictas, lo que los distingue de los lenguajes naturales. Los lenguajes formales se clasifican según la
Jerarquía de Chomsky y Variantes
- Lenguajes regulares Autómatas finitos)
- Lenguajes libres de contexto (Autómatas de pila)
- Lenguajes sensibles al contexto (Máquina Linealmente Acotada)
- Lenguajes recursivamente enumerables (Máquinas de Turing)
- Variantes de Máquinas de Turing:
- Máquinas de Turing alternantes
- Máquinas de registro
- Sistemas de Post
Modelos de Reescritura y Transformación
- Gramáticas de grafos
- Cálculo lambda
- Sistemas de reescritura general
Modelos Estocásticos y Probabilísticos
- Procesos de Markov
- Máquinas probabilísticas de Turing
- Redes Bayesianas
Modelos Inspirados Biológicamente
- Computación ADN
- Computación membranal (P-systems)
- Computación evolutiva
Modelos Cuánticos
- Máquinas de Turing cuánticas
- Circuitos cuánticos
Modelos Lógicos y de Decisión
- Lógica:
- Lógica temporal.
- Lógica modal
- Cuando estos modelos no pueden interpretar los lenguajes naturales humanos se recurre a Lógica informal.
Modelos Continuos
- Máquinas analógicas
- Autómatas continuos
Lenguajes de Programación y su Relación con Lenguajes Formales
Los Lenguajes de programación integran varios niveles de la teoría de lenguajes formales:
Análisis Léxico y Sintáctico
- La tokenización utiliza autómatas finitos (lenguajes regulares)
- El parsing usa gramáticas libres de contexto y autómatas de pila
- La sintaxis del lenguaje se define mediante gramáticas formales
Poder Computacional
- Los lenguajes de programación modernos son Turing completos
- Pueden resolver cualquier problema computable
- Equivalentes en poder a las Máquinas de Turing
Niveles de Abstracción
- Nivel Léxico (Tokens)
- Utiliza lenguajes regulares
- Implementado con autómatas finitos
-
Reconoce identificadores, números, símbolos
-
Nivel Sintáctico (Estructura)
- Utiliza lenguajes libres de contexto
- Implementado con autómatas de pila
-
Define la estructura gramatical del código
-
Nivel Semántico (Significado)
- Requiere lenguajes sensibles al contexto
- Verifica tipos y reglas semánticas
-
Implementa el comportamiento del programa
-
Nivel de Ejecución
- Turing completo
- Puede computar cualquier función computable
- Implementa la lógica completa del programa