2009-03-20 1 views
1

Я видел примеры того, как вы можете использовать преобразования Groovy AST для расширения языка, например. для регистрации до и после вызова метода, как показано на рисунке here. Однако можно ли использовать эту структуру для расширения синтаксиса самого языка? Например, что если бы я хотел, чтобы иметь возможность анализировать и преобразовывать следующие в AST, а затем генерировать набор операторов:Могу ли я использовать преобразования AST в Groovy, чтобы расширить его синтаксис?

newClassKeyword C { /* something here */ } 

ответ

1

Вы не можете расширить синтаксис Groovy с трансформациями AST, но вы можете дать полностью новую семантику существующего синтаксиса. Поскольку синтаксис Groovy довольно гибкий, это может привести вас к довольно далеко.

2

Я не Groovy эксперт, но я смотрел на некоторые из новые рамки, выпущенные из выпуска 1.6, и представляющие особый интерес для меня, - это Spock. Вероятно, это именно то, что вы ищете, поскольку они используют трансформации AST для определения всего языка спецификации для тестирования.

Я забыл добавить, что InfoQ has an article, в котором описываются новые функции Groovy 1.6. Гийом Лафордж написал статью, и в ней он описывает немного об АСТ.

Смежные вопросы