2015-06-30 2 views
-1

У меня есть проект в .NET target с использованием ANTLR, и когда я добавляю новый проект с использованием ANTLR, он не генерирует парсер, старые проекты работает нормально.Antlr4 - ANTLR ERROR отсутствует SEMI в '┐grammar' и не удалось найти исходный файл (компилятор CSC)

grammar MyGrammar; 

/* 
* Parser Rules 
*/ 

Errors: 

Error6 missing SEMI at '┐grammar' C:\\... 1 3 MyGrammarLib 
Error7 missing COLON at 'MyGrammar' while matching a rule C:\\... 1 12 MyGrammarLib 
Error5 '╗' came as a complete surprise to me C:\\... 1 2 MyGrammarLib 
Error4 '´' came as a complete surprise to me C:\\... 1 1 MyGrammarLib 

Когда я перезагрузится и восстановить его не может генерировать CSC для всех LIBS с помощью ANTLR, это выглядит, как мой Visual Studio 2012 не поддерживает Antlr языка и инструмент выполнения больше. Также переустановка ANTLR не помогает. Что происходит?

PK

+0

Сообщения об ошибке выглядит довольно много, как у вас есть [метка порядка байт] (https://en.wikipedia.org/wiki/Byte_order_mark) в файлах, и кодировка по умолчанию а не UTF-8. Предположительно, «новые проекты» хранят файлы как UTF-8 с спецификацией, а «старые проекты» используют другую кодировку файлов. Если это вызывает проблему, оно должно исчезнуть при указании '-Dfile.encoding = UTF-8' в командной строке Java. – Gunther

+0

Я изменил его на UTF-8, потому что у меня есть диакритика, это путь отладки, и он говорит, что он не может найти LÖA вместо LŠA. Файл существует, свойство Full Path файла g4 содержит LŠA, я также изменяю инструменты свойств -> параметры -> Общие -> Местоположение проекта после перемещения проекта, но это не помогло. –

+0

oh нет, это не вызвано параметрами среды, мне нужно установить каталог проекта, но он имеет относительный путь в его свойствах, поэтому как изменить кодировку относительных путей? Другие .cs-файлы в порядке, но g4-файлы не могут быть настроены: исходный файл: «C: \ Users \ ... \ LÖA \ trunk \ projectName \ CoMaTion \ obj \ Debug \ CoMaTionalParser.cs" не найден. –

ответ

0

Убедитесь, что ANTLR (или на самом деле среда выполнения Java) знает о кодировании файлов.

Если это UTF-8 (с или без BOM), это можно сделать, указав его в командной строке Java, например.

java -Dfile.encoding=UTF-8 -jar antlr-4.5-complete.jar ...

+0

Возможно, он работает для цели Java, у меня нет файла jar в папке проекта, это может быть эквивалентно ANTLR4.Runtime.net45.dll. Я забыл добавить тег Visual Studio. Я улучшу вопрос. Единственный способ избежать этого в Visual Studio - очистить все диакритики. –

+0

java target ... Я имел в виду среду Java. –

+0

После удаления диакритики это сработало. Из-за новой версии .NET мне также пришлось изменить целевую структуру в ** новых ** свойствах classLibs до 4.5 (это было 4.5.2), но это другая глава ... [ANTLR не может сгенерировать 'org.antlr .v4.codegen.CSharp_v4_5_1Target '] (https://mhusseini.wordpress.com/2014/02/16/antlr-cannot-generate-org-antlr-v4-codegen-csharp_v4_5_1target-code-as-of-version-4 -1-снимок /) –

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