Todos los idiomas regulares tienen gramáticas LL (1). Para obtener dicha gramática, tome cualquier DFA para el lenguaje regular (quizás haciendo la construcción del subconjunto en el NFA obtenido de la expresión regular), luego conviértalo en una gramática regular recursiva a la derecha. Esta gramática es entonces LL (1), porque cualquier par de producciones para el mismo no terminal comienza con símbolos diferentes o uno produce ε y tiene $ como token anticipado. En consecuencia, todos los lenguajes regulares también son LR (1), ya que cualquier gramática LL (1) es LR (1). Además, utilizando un resultado importante de este documento , puede mostrar que cualquier lenguaje LR (1) tiene una gramática SLR (1), lo que significa que cualquier lenguaje normal tiene una gramática SLR (1).
Sin embargo, los idiomas normales no son todos LR (0). Los lenguajes LR (0) tienen propiedades muy específicas, en particular, deben estar libres de prefijos. Por lo tanto, el lenguaje regular {a, aa} no es LR (0), aunque es claramente regular (regex a | (aa)). Sin embargo, los idiomas LR (0) no están contenidos adecuadamente en los idiomas regulares; esta gramática para {0 n 21 n | n ≥ 1} es LR (0), pero el idioma no es regular:
S -> E
E -> 0E1 | 2
¡Espero que esto ayude!