Antlr генерирует сломанный код C #, пропущенное имя переменной в объявлении - PullRequest
1 голос
/ 22 марта 2012

У меня есть грамматика для языка шаблонов.

Я создал это для Antlr 3.2 и цели CSharp2, и он работает.

Теперь я пытаюсь перейти на antlr 3.4 и цель CSharp3 (пробовал также CSharp2) и получаю странную ошибку в Parser в функции synpred.

В нескольких объявлениях переменных отсутствует имя переменной:

IToken  = default(IToken)

Некоторые также имеют неправильный тип

void  = default(void);

должно быть

AstParserRuleReturnScope<CommonTree, IToken>  = default(AstParserRuleReturnScope<CommonTree, IToken>);

Кто-нибудь видел это раньше и что может быть причиной.

Грамматика такая же, как и раньше.

К сожалению, я не могу поделиться грамматикой, и у меня не было времени создать тестовую грамматику, которая вызывает ту же ошибку.

Конечно, я могу исправить ошибки вручную, и код работает, но немного утомительно, когда приходится разбирать код после их исправления.

1 Ответ

1 голос
/ 18 июля 2012

Мне удалось решить эту проблему, используя нативную версию .NET инструмента генерации кода ANTLR (Antlr3.exe) вместо версии Java. В частности, antlr-dotnet-tool-3.4.1.9004.7z работал для меня, а antlr-3.4-complete-no-antlrv2.jar - нет.

...