Tengo una gramática y puedo verificar si LL (1) es o no. Sin embargo, ¿hay alguna manera de verificar si el lenguaje generado por la gramática es LL (1)? ¿Y cuál es exactamente la diferencia entre las gramáticas LL (1) y los lenguajes LL (1)?¿Cómo determinar si un idioma es LL (1)?
Respuesta
Cualquier gramática LL (1) define un lenguaje LL (1). Por definición, un lenguaje es LL (1) si hay alguna gramática que lo genera que es LL (1), por lo que el hecho de que tenga una gramática LL (1) para el idioma automáticamente significa que el lenguaje es LL (1) .
Para elaborar, un lenguaje es un conjunto de cadenas y una gramática para ese lenguaje es un medio para describir ese idioma. Algunos lenguajes tienen gramáticas LL (1) mientras que otros no. Sin embargo, el hecho de que una gramática no sea LL (1) no significa que el lenguaje que describe no lo es. Por ejemplo, considere esta gramática:
A -> ab | ac
Esta gramática no es LL (1), ya que contiene un primer primer conflicto/cuando se trata de predecir la producción de A al ver el terminal a. Sin embargo, se describe un (1) Idioma LL, ya que el lenguaje también es descrito por la gramática
A -> aX
X -> b | c
Así que el lenguaje generado por estas gramáticas (que solo contiene AB y AC) es de hecho LL (1).
Determinar si el lenguaje descrito por una gramática arbitraria es LL (1) es mucho más difícil y, a mi leal saber y entender, la única forma de hacerlo sería explicitar una gramática LL (1) para el lenguaje generado por la gramática inicial (que es engañosa) o para demostrar matemáticamente que no existe tal gramática.
Espero que esto ayude!
Entonces, un LL (1) * idioma * puede definirse por un número de otras * gramáticas * que no son LL (1) (mientras exista tal LL (1) gramática)? - Solo trato de confirmar en mi cabeza. –
@pst, sí, es suficiente que haya una gramática LL (1). –
- 1. ¿Busca un idioma que no sea LL (1)?
- 2. ¿Cómo determinar si un idioma es recursivo o recursivo enumerable?
- 3. Lenguaje LL (2) que no es LL (1)
- 4. ¿Cómo identificar si una gramática es LL (1), LR (0) o SLR (1)?
- 5. ¿Es cada LL (1) gramática también una LR (1)?
- 6. LL (1) no puede ser ambiguo
- 7. ¿Cómo determinar si una secuencia es bitónica?
- 8. Determinar si un archivo es un duplicado
- 9. ¿Cómo puedo determinar si un archivo es un archivo PDF?
- 10. cómo determinar si un carácter es un carácter chino
- 11. ¿Cómo determinar si un tipo es un tipo de colección?
- 12. Perl, ¿cómo determinar si un valor variable es un número?
- 13. ¿Cómo determinar si un descriptor de archivo es buscable?
- 14. Cómo determinar si KeyCode es carácter imprimible
- 15. ¿Cómo determinar si Type es una estructura?
- 16. ¿Cómo determinar si un tipo .NET es una estructura personalizada?
- 17. cómo determinar si una imagen es explícita
- 18. determinar rápidamente si un número es primo en Python para los números <1 mil millones
- 19. ¿Existe un algoritmo que puede determinar si un idioma regular coincide con cualquier entrada que coincida con el idioma normal?
- 20. ¿Cómo puedo determinar si un idioma no tiene contexto o no?
- 21. Cómo determinar si una cadena es un número en C#
- 22. ¿Cómo determinar si una ruta es un subdirectorio de otra?
- 23. Cómo determinar si una excepción es de un tipo particular
- 24. ¿Cómo determinar si una vista es visible en un ListView?
- 25. Cómo determinar si el cliente es un dispositivo táctil
- 26. ¿Cómo determinar si algo es miembro de un conjunto ordenado?
- 27. ¿Cómo determinar si el objeto Javascript es un evento?
- 28. ¿Cómo determinar si un personaje es una letra en Java?
- 29. ¿Cómo puedo determinar si un paquete es RTP/RTCP?
- 30. ¿Cómo determinar si un campo tiene foco?
¿Es su pregunta cuál es la diferencia entre la gramática y el idioma? –