salutations.boost :: spirit et générer différents nœuds
J'ai été intéressant de savoir comment forcer boost :: spirit à produire des nœuds de différentes classes lors de l'analyse grammaticale et de la génération d'AST. disons, je veux avoir différents noeuds tels que VariableNode (qui a le nom de variable comme membre), ValueNode (qui a la valeur comme membre), etc.
ce serait très utile lorsqu'il s'agit de tree-walker. dans ce cas, nous écririons une classe abstraite de base pour marcher tous les différents noeuds (en appliquant le modèle "le visiteur") et l'étendrons en traitant de la phase de vérification sémantique, de la phase de génération de code et des autres. Boost :: spirit nous permet de paramétrer l'usine utilisée pour les arbres, mais j'ai été incapable de trouver un moyen correct d'ajuster son comportement.
des idées, code? Merci d'avance.
n1ck, merci beaucoup. oui, vous avez ma bonne question. hmm, j'ai besoin de temps pour jeter un oeil à la version spirit 2.x et à boost :: docs. s'il vous plaît rester en contact. – varnie
Eh bien, agréable d'avoir pu aider. Voici le lien pour le doc le plus à jour pour l'esprit 2.x, je ne sais pas si vous aviez pu l'obtenir mais je l'ai trouvé difficile à trouver et celui sur le site Web de poussée n'était pas la dernière fois que je vérifié: http://svn.boost.org/svn/boost/trunk/libs/spirit/doc/html/index.html. boost :: apply_visitor devrait être relativement facile à utiliser si vous regardez les exemples mais si vous avez besoin d'aide, n'hésitez pas à me le dire. À votre santé. – n1ckp
tout ce boost :: spirit :: qi stuff est complètement nouveau pour moi. J'ai l'ancienne grammaire classique de boost-spirit avec génération d'AST en utilisant les anciennes directives boost (gen_pt_node_d, gen_ast_node_d etc). il est temps pour moi de réécrire ce code avec l'utilisation de boost :: spirit :: qi. J'ai découvert qu'il est possible de générer AST presque à la volée en le décrivant dans la grammaire (avec l'aide de boost :: fusion). – varnie