# data[].attributes.body
Se define como lenguaje formal a un conjunto de cadenas de simbolos que están organizados según reglas sintácticas específicas. A la vez, estás reglas están definidas a través de una gramática formal, que indica cómo se deben de combinar los elementos del lenguaje para que puedan crear cadenas válidas.

# data[].attributes.body
Símbolos terminales (∑). Comprenden los elementos básicos del lenguaje (el alfabeto).

Símbolos no terminales (N). Denominados a veces “variables sintácticas”, son de carácter auxiliar; expresan estados intermedios en el proceso de generación de las palabras. No forman parte del lenguaje.

Símbolo inicial o axioma (S ∈ N). Es un símbolo no terminal de inicio, del que se parte para la formación de cualquiera de las palabras del lenguaje.

Lenguajes de programación (C, Java, Python). Utilizado para el desarrollo de software de sistemas y aplicaciones, cuenta con reglas gramaticales preestablecidas (sintaxis).

# data[].attributes.body
Alfabetos: Σ, Σ1

El alfabeto es un conjunto no vacío y finito de elementos denominados símbolos

Cadena: Secuencia finita de símbolos procedentes de un alfabeto.

Cadena nula (vacía): Aquella cadena que no contiene ningún símbolo. Se denota mediante λ (o ²)

Ejemplos:

Alfabeto=Cadenas

{a, b, c} λ, a, abc, ccccc, . . .

{0, 1} λ, 0, 010101, 10111111100001111, . . .

ASCII λ, sin(-1238E42+y), program-nada-begin-end;, . . .

# data[].attributes.body
Alfabeto binario: {0, 1}

Este alfabeto tiene dos símbolos: 0 y 1.

Cadenas posibles: 0, 1, 00, 01, 10, 11, etc.

Alfabeto de letras minúsculas inglesas: {a, b, c, ..., z}

Este alfabeto tiene 26 símbolos: las letras minúsculas de la 'a' a la 'z'.

Cadenas posibles: a, b, ab, cat, dog, etc.

Alfabeto de dígitos decimales: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Este alfabeto tiene 10 símbolos: los dígitos del 0 al 9.

Cadenas posibles: 0, 1, 10, 123, 4567, etc.

# data[].attributes.body
La gramática de un lenguaje formal es un conjunto de reglas que define la estructura y las formas válidas de las secuencias de símbolos en dicho lenguaje. Estas reglas especifican cómo construir cadenas (palabras) a partir de un alfabeto (un conjunto finito de símbolos). La teoría de lenguajes formales es fundamental en la informática teórica y tiene aplicaciones en el diseño de lenguajes de programación, compiladores y en la teoría de autómatas.

Componentes de una gramática formal:

Una gramática formal se define por una cuádrupla 𝐺=(𝑉,Σ,𝑅,𝑆) donde:

•            V (variables o símbolos no terminales): Un conjunto finito de símbolos que pueden ser reemplazados. Se usan para definir las estructuras del lenguaje.                                                                                         •             Σ (alfabeto o símbolos terminales): Un conjunto finito de símbolos que forman las cadenas del lenguaje. Estos son los símbolos "reales" que aparecen en las palabras del lenguaje.                                                         •          R (reglas de producción): Un conjunto finito de reglas que describen cómo se pueden reemplazar los símbolos. Cada regla tiene la forma 𝐴→𝛽, donde 𝐴 es un símbolo no terminal y 𝛽 es una cadena de símbolos de 𝑉 ∪ Σ.

•      S (símbolo inicial): Un símbolo no terminal de 𝑉 desde el cual comienzan las derivaciones

# data[].attributes.headline
Tipos de gramáticas formales (Jerarquía de Chomsky)

# data[].attributes.subject
Tipos de gramáticas formales (Jerarquía de Chomsky)

# data[].attributes.body
Gramáticas de Tipo 0 (Gramáticas irrestrictas):

Las reglas de producción pueden tener cualquier forma α→β, donde α y β son cadenas de símbolos de V ∪ Σ y α no es la cadena vacía.

Estas gramáticas generan todos los lenguajes recursivamente enumerables.

Gramáticas de Tipo 1 (Gramáticas sensibles al contexto):

Las reglas de producción tienen la forma αAβ→αγβ, donde A es un símbolo no terminal y γ es una cadena no vacía de símbolos.

Estas gramáticas generan lenguajes sensibles al contexto.

Gramáticas de Tipo 2 (Gramáticas libres de contexto):

Las reglas de producción tienen la forma A→β, donde A es un símbolo no terminal y β es una cadena de símbolos de V ∪ Σ.

Estas gramáticas generan lenguajes libres de contexto, que son reconocidos por autómatas de pila.

Gramáticas de Tipo 3 (Gramáticas regulares):

Las reglas de producción tienen la forma A→aB o A→a, donde A y B son símbolos no terminales y a es un símbolo terminal.

Estas gramáticas generan lenguajes regulares, que son reconocidos por autómatas finitos.