2016-10-25 6 views
0

Dans l'université, ils me demandent d'utiliser la grammaire et l'automate Pushdown pour vérifier la syntaxe d'une partie du code Java. Du fait que je n'ai pas encore utilisé cet automate, j'ai appris un peu comment ils fonctionnent et je pense que cet automate n'est pas très utile pour vérifier la syntaxe du code car l'automate à pile est utilisé pour vérifier une grammaire avec une certaine proportion comme "0^n 1^2n | n> = 0".L'automate à pile est-il utile dans ce cas?

Ces proportions entre les jetons ne sont pas présentes dans la syntaxe du code, donc je pense que l'automate à pile n'est pas utile dans ce cas.

  • J'ai raison?
  • dois-je me plaindre de ce travail qu'ils me demandent?

Répondre

0

Les grammaires non déterministes (NPDA) et les grammaires sans contexte (CFG) ont la même puissance dans la représentation des langues.

Comme la plupart (sinon la totalité) d'une syntaxe de langage de programmation (comme java) peut être présentée par un CFG, elle peut aussi être présentée par un NPDA.

Alors, ne vous plaignez pas, faites l'assignation.

+0

Merci pour la réponse mais comment pourriez-vous utiliser la pile dans une grammaire complètement linéaire? Je veux dire, dans la syntaxe d'une ligne de code, il n'est pas nécessaire d'utiliser la pile car la quantité de jetons n'a pas de relation. Pourriez-vous créer un accepteur de compression pour cette ligne de code "int var = 25 + x"? – vanillaHoman