Question

J'ai une application où je dispose déjà d'un analyseur syntaxique pour une sorte de grammaire et je dois ajouter une seconde grammaire différente dans un autre but.

Est-il possible d'avoir plus d'un?

Et si oui, comment obtenez-vous un autre point d'entrée?

Merci

david allan pinson

Était-ce utile?

La solution

Je pense que vous pouvez à cela en utilisant l'option --name-prefix Bison, et l'option --prefix à Flex.

Dans les deux cas, ils vous permettent de remplacer le préfixe par défaut « yy » utilisé sur les fonctions générées par un préfixe de votre choix.

Autres conseils

Oui, il est possible.

yacc devrait avoir un drapeau -p, où vous pouvez spécifier un préfixe différent au lieu de la valeur par défaut « yy ».

Le fichier généré par un seul conatins lex symbole utilisé à l'extérieur: yylex. Vous pouvez compiler avec -Dyylex = mySecondLex, par exemple.

Pas une réponse directe, mais vous voudrez peut-être envisager d'utiliser une approche plus générique tel que GoldParser qui vous permet d'utiliser un moteur générique pour traiter la LALR et DFA générées à partir déposé grammaires.

Ce chemin, vous pouvez utiliser un certain nombre de différentes grammaires dans la même application, et changer la grammaire ne crée pas de code source, mais plutôt juste de nouveaux fichiers de table (qui pourrait être inclus en tant que ressource incorporée ou similaire).

LEX et YACC standard ont aucun moyen de le faire. Flex et Bison font, tout comme d'autres implémentations. Puisque vous avez dit (dans un commentaire) que vous n'utilisez pas flex et bison, les versions de lex et yacc sont vous utilisez?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top