Est-il une terminologie officielle au sujet de quelque chose comme des guillemets “” la grammaire?

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

Question

Dans de nombreux langage de programmation de la chaîne est un jeton.

Par exemple:

 token               ::= '"' string
                       | digit nat

 string              ::= char string
                       | '"'

 nat                 ::= digit nat
                       | ϵ

C'est une grammaire LL(1) pour certains langage de programmation de la touche de la grammaire.

Lors de l'analyse d'un string, il n'est pas nécessaire de vérifier suivent, parce qu'il n'y est une " à la fin de chaque string.

La comparaison avec nat, string est plus facile à analyser.

Ma question est

Est-il une terminologie officielle à propos de ce genre de grammaire?

Merci.


Édition:

Il y avait une erreur dans l'original de la grammaire, merci @rici pour pointer mes erreurs.

Était-ce utile?

La solution

SUIVRE les jeux ne sont pas utilisés dans le traitement de string ou nat.Dans les deux cas, l'analyseur doit simplement déterminer si l'entrée est un ensemble de symboles en vigueur.Dans le cas de nat, de la validité de symboles sont des chiffres;dans le cas de string, ils sont des caractères autres que des ".(Dans la vraie langues, l'analyseur serait également la vérification de \).Mais dans les deux cas, une vérification est nécessaire, et il n'y a pas un bon critère pour dire qu'un test est plus "simple" que l'autre.(Dans la pratique, les deux contrôles sont susceptibles d'être une simple lecture de la table.Ils sont donc O(1).)

SUIVEZ les ensembles ne sont nécessaires que lorsque la grammaire contient ε productions.Même alors, l'analyseur actions ne sont pas compliquées.Ce qui est plus compliqué, c'est de la construction de l'analyseur, quelque chose qui n'arrive qu'une fois.Ce n'est pas vraiment que les grandes d'un accord, mais c'est suffisamment notable que "ε-gratuit grammaires" sont une chose.Je ne pense pas qu'il y a tout un vocabulaire commun pour décrire la différence entre explicitement et implicitement terminée par la répétition, et de toute façon, la distinction est très difficile à définir de manière stricte.Votre string serait analysé par un analyseur qui a utilisé une règle différente pour recueillir la fuite ", et c'est tout à fait possible que les deux analyseurs jusqu'à la fin avec la même mise en œuvre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top