2010-02-04 7 views

Répondre

2

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.

Questions connexes