# data[].attributes.body
Se refieren a las diferentes categorías de reglas que se utilizan para describir los lenguajes formales. Chomsky clasifica las gramáticas formales en cuatro niveles en función de la complejidad de las reglas de producción permitidas. Asimismo cada tipo de gramática se asocia a un conjunto de lenguajes y a un tipo de autómata capaz de reconocerlos.

# data[].attributes.attachment_caption
Cualquier cadena xAy en la gramatica puede transformarse en v, siendo A un simbolo no terminal y x,y,v cadenas que pueden contener terminales y no terminales.

# data[].attributes.body
Gramáticas sin restricciones o gramáticas recursivamente enumerables.

Son gramáticas más generales, sin restricciones específicas en sus reglas de producción.

Ejemplo:

S ::= aSa

S ::= bSb

S ::= ε

Derivacion: "abaaba"

S ::= aSa

aSa ::= abSba

abSba ::= abaSaba

abaSaba ::= abaaba (S se reemplaza por la cadena vacia)

# data[].attributes.attachment_caption
A es un no terminal que se puede transformar en v, solo si esta rodeado de x y y, v debe ser al menos un símbolo y el lado derecho de la producción debe ser igual o mas largo que el izquierdo.

# data[].attributes.body
Dependientes del contexto, sus reglas requieren de un contexto especifico para aplicarse.

Ejemplo:

aXb ::= aYb

Y ::= YY

Y ::= c

Para que X se transforme en Y debe estar entre una a y b(contexto), posteriormente se puede expandir o transformarse en c. Derivación desde aXb

aXb ::= aYb

aYb ::= aYYb

aYYb ::= aYcb

aYcb ::= accb

# data[].attributes.attachment_caption
A es un no terminal que se reemplaza por v, v puede ser cualquier secuencia de terminales y no terminales.

# data[].attributes.body
Independientes del contexto, la parte izquierda de la producción debe contener un único símbolo no terminal.

Ejemplo

S ::= (S)

S ::= SS

S ::= ε (cadena vacía)

Derivación para (()())

S ::= (S)

(S) ::= (SS)

(SS) ::= ((S)S)

((S)S) ::= (()S)

(()S) ::= (()(S))

(()(S)) ::= (()())

S no depende del contexto para expanderse de la misma forma, esto genera estructuras anidadas que no dependen del contexto.

# data[].attributes.body
Son las mas restringidas y generan lenguajes regulares. Sus reglas tienen un máximo de dos símbolos en el lado derecho, siendo uno de estos terminal, y un solo símbolo no terminal en la parte izquierda.

Ejemplo GLD

S ::= aB

B ::= bB

B ::= λ

Derivaciones

S ::= aB

aB ::= abB

abB ::= abbB

abbB ::= abb

Los valores no terminales se expanden después del terminal

Ejemplo GLI

S ::= A

A ::= Ba

B ::= bB

B ::= λ

Derivaciones

S ::= A

A ::= Ba

Ba ::= bBa

bBa ::= bbBa

bbBa ::= bba

Los simbolos no terminles se expanden a la izquierda del terminal