Comme le dit le titre, je voudrais activer/désactiver certaines règles de grammaire dans un fichier de grammaire yacc ou bison.Activer/désactiver les règles de grammaire dans Yacc/Bison
Existe-t-il un moyen de le faire?
Comme le dit le titre, je voudrais activer/désactiver certaines règles de grammaire dans un fichier de grammaire yacc ou bison.Activer/désactiver les règles de grammaire dans Yacc/Bison
Existe-t-il un moyen de le faire?
Si vous voulez dire, au moment de la compilation, yacc utilise la syntaxe de commentaire C /* */
standard. Si vous voulez dire qu'à l'exécution, vous devez toujours travailler avec les tables dont vous disposez, ils doivent donc inclure toute la grammaire avec les phrases optionnelles. Je suggère donc de créer un faux symbole de terminal. C'est ce que je vous propose. Les règles optionnelles seraient précédées du faux terminal. Vous ne retournerez ce terminal que si vous incluez les productions optionnelles. Une variante de cette approche impliquerait de définir deux versions d'un terminal réel qui existe réellement. Cela ne fonctionne que pour les grammaires qui mènent des chaînes avec des terminaux mais si vous avez une telle entrée, puis un terminal peut signifier un ensemble de règles et un autre terminal peut apparaître dans deux ensembles de règles, qui est la suivante:
T_A dynamic_phrase_in_grammar;
always_on static_phrase_in_grammar;
always_on: T_A | T_B;
Ainsi, pour activer la phrase dynamique, le terminal réel est retourné comme T_A, pour le désactiver, retourner comme T_B.
Voulez-vous des règles conditionnelles au moment de l'exécution ou de la compilation? –