-1

J'essaie toujours de trouver un moyen d'implémenter un DSL efficacement en Python, je me suis contenté d'ANTLR 4.X ​​pour la génération d'analyseurs, mon problème est maintenant que le DSL est grand et j'ai besoin d'un moyen efficace de spécifier l'AST pour mon DSL.libs pour générer des ASTs DSL en python, des traversiers/réécrivains d'arbres, une correspondance avancée de dispatch/pattern?

J'ai jeté un oeil à macropy qui serait idéal si seulement il était compatible avec python 3.6.x et pas 2.7.x seulement.

J'ai trouvé le paquetage iAST qui permet de générer des classes python à partir d'une spécification Zephyr ASDL. Existe-t-il d'autres meilleures options que je devrais connaître pour générer des AST à partir d'une spécification ADT? J'ai aussi regardé plusieurs bibliothèques de dispatch afin d'écrire des traversiers et des réécrivains AST de manière modulaire et composable (en essayant d'éviter le modèle de visiteur naïf basé sur le nommage de méthodes), je ne peux pas décider lequel choisir (PEAK-règles? Multimethods? Dépêche functools?). Je voudrais m'aventurer dans un mélange de type et de dispatch basé sur des prédicats qui pourrait me rapprocher de la correspondance de pattern, mais toutes ces libs semblent plutôt sommaires et fragiles ...

Un conseil?

Répondre

0

Mise à jour: vient de découvrir que macropy a été fourchue et mis à jour pour fonctionner avec python 3.5+ :)

https://github.com/azazel75/macropy

il a un générateur d'analyseur de cheville, les classes de cas comme scala et pattern-matching, idéal pour construire des transpileurs en python