¿Existe alguna terminología oficial sobre algo como la gramática de las comillas dobles “”?

cs.stackexchange https://cs.stackexchange.com/questions/128538

Pregunta

En muchos lenguajes de programación, una cadena es un token.

Por ejemplo:

 token               ::= '"' string
                       | digit nat

 string              ::= char string
                       | '"'

 nat                 ::= digit nat
                       | ϵ

Esta es una gramática LL(1) para la gramática toke de algunos lenguajes de programación.

Al analizar un string, no es necesario comprobar el conjunto de seguimiento, porque hay un " al final de cada string.

Comparado con nat, string es más fácil de analizar.

Mi pregunta es

¿Existe alguna terminología oficial sobre este tipo de gramática?

Gracias.


Edición:

Hubo algún error en la gramática original, gracias @rici por señalar mis errores.

¿Fue útil?

Solución

Los conjuntos SIGUIENTE no se utilizan en el análisis de ninguno de los dos. string o nat.En ambos casos, el analizador simplemente necesita determinar si la entrada está en un conjunto de símbolos válidos.En el caso de nat, los símbolos válidos son dígitos;En el caso de string, son personajes distintos a ".(En lenguajes reales, el analizador también estaría comprobando \).Pero en ambos casos es necesaria una verificación y no existe un buen criterio para decir que una prueba es "más simple" que otra.(En la práctica, es probable que ambas comprobaciones sean una simple búsqueda en una tabla.Entonces son O(1).)

Los conjuntos FOLLOW solo son necesarios cuando la gramática contiene ε producciones.Incluso entonces, las acciones del analizador no son complicadas.Lo que es más complicado es construir el analizador, algo que sólo ocurre una vez.En realidad no es gran cosa, pero es suficientemente notable que las "gramáticas libres de ε" existan.No creo que exista ningún vocabulario común para describir la diferencia entre repetición terminada explícita e implícitamente, y de cualquier manera la distinción será muy difícil de definir estrictamente.Su string sería analizado por un analizador que utilizó una regla diferente para recopilar el final ", y es muy posible que los dos analizadores terminen con la misma implementación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a cs.stackexchange
scroll top