В соответствии с этими инструкциями я пытаюсь использовать сгенерированные ANTLR файлы * .as в текущем проекте Flash Builder 4.5.1.
Поэтому я добавил эту среду выполнения ActionScript ANTLR в свой проект - без проблем.
Я скомпилировал спецификации лексера / парсера, используя ANTLRWorks без проблем.
Я добавил опцию языка в исходный файл * .g, чтобы ANTLR генерировал источники ActionScript:
options {
backtrack = true;
memoize = true;
k=2;
output = AST;
language=ActionScript; // Added this
ASTLabelType = CommonTree;
}
К сожалению, сгенерированный ANTLR / ANTLRworks код Actionscript содержит ошибки:
Операторы Catch читаются так catch (RecognitionException re)
, но должны выглядеть так: catch ( re:RecognitionException )
.
Кроме того, Flash Builder жалуется на использование массива здесь:
public override function get tokenNames():Array { return PhpParser.tokenNames; }
Может ли кто-нибудь подтвердить эти проблемы и, возможно, дать подсказки, как их решить?
UPDATE-1
Беглый взгляд на источники ANTLR v3.3 показал этот код шаблона [строка 142 @ ActionScript.stg]:
catch ( re:RecognitionException )
Таким образом, текущая ветка 3.3, кажется, знает правильный синтаксис.
К сожалению, текущая версия ANTLRworks 1.4.2 - которая включает ветку 3.3 - не работает.