2009-03-20 5 views
1

J'ai vu des exemples de la façon dont vous pouvez utiliser les transformations AST Groovy pour étendre le langage, par ex. pour se connecter avant et après un appel de méthode comme indiqué here. Cependant, serait-il également possible d'utiliser ce cadre pour étendre la syntaxe du langage lui-même? Par exemple, si je voulais être capable d'analyser et de transformer ce qui suit dans un AST puis générer un ensemble d'instructions:Puis-je utiliser les transformations AST dans Groovy pour étendre sa syntaxe?

newClassKeyword C { /* something here */ } 

Répondre

1

Vous ne pouvez pas étendre la syntaxe de Groovy avec les transformations AST, mais vous pouvez donner une sémantique complètement nouvelle à la syntaxe existante. Parce que la syntaxe de Groovy est assez flexible, cela peut vous mener loin.

2

Je ne suis pas expert Groovy, mais je l'ai regardé certains des les nouveaux frameworks qui sont sortis de la version 1.6, et qui m'intéressent particulièrement, sont les suivants: Spock. C'est probablement exactement ce que vous recherchez, car ils utilisent des transformations AST pour définir un langage de spécification complet à tester.

J'ai oublié d'ajouter que InfoQ has an article qui décrit les nouvelles fonctionnalités de Groovy 1.6. Guillaume LaForge a écrit l'article, dans lequel il décrit un peu l'AST.

Questions connexes