Признать специальные символы ANTLR4 [duplicate]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
6
задан Roger Costello 24 January 2015 в 15:25
поделиться

1 ответ

ANTLR готов принять 16-битные символы, но по умолчанию многие локали будут считываться в символах в виде байтов (8 бит). Вам нужно указать соответствующую кодировку при чтении из файла с использованием библиотек Java. Если вы используете TestRig, возможно, через псевдоним / скрипт grun, используйте аргумент -encoding utf-8 или что угодно. Если вы посмотрите на исходный код этого класса, вы увидите следующий механизм:

InputStream is = new FileInputStream(inputFile);
Reader r = new InputStreamReader(is, encoding); // e.g., euc-jp or utf-8
ANTLRInputStream input = new ANTLRInputStream(r);
XLexer lexer = new XLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
...
8
ответ дан Terence Parr 18 August 2018 в 07:48
поделиться
  • 1
    Благодаря! Я попытался добавить флаг -encoding при вызове TestRig: java org.antlr.v4.runtime.misc.TestRig -encoding UTF-8 ID.g4 Однако это привело к этой ошибке: невозможно загрузить -кодирование как лексер или парсер Предложения ? – Roger Costello 24 January 2015 в 22:32
  • 2
    вы не используете TestRig для своей грамматики. это то, что для antlr. – Terence Parr 25 January 2015 в 02:29
  • 3
    -кодирование идет на grun за мой ответ – Terence Parr 25 January 2015 в 19:19
  • 4
    java -Dfile.encoding=UTF-8 org.antlr.v4.runtime.misc.TestRig ID ... – Gunther 26 January 2015 в 15:38
  • 5
    Спасибо Гюнтеру. Я дал это, но он дает то же сообщение об ошибке: Не удается загрузить -encoding как lexer или parser. – Roger Costello 26 January 2015 в 18:02
Другие вопросы по тегам:

Похожие вопросы: