У меня есть эта грамматика:ANTLR 4 изо-8859-15 закодирован соответствующий файл строка, содержащая u0161 š
KEY
: [a-zA-Z\u0160\u0161\u00C0-\u00FF][a-zA-Z_0-9\-\''\u0160\u0161\u00C0-\u00FF]*
;
Чтение ISO-8859-15 закодированного текстового файла
new ANTLRFileStream(fileName, "ISO-8859-15")
строка Milešovka
. Почему š
дает ошибку распознавания маркера?
Трассировка:
line 110:6 token recognition error at: ''exit field, LT(1)={
EDIT: Я использую ANTLR 4.5.1 (и протестировали 4.4 - такой же вопрос).
Предоставляет ли ANTLRFileStream поток * символов Unicode * в lexer? [Тогда \ u0161 был бы прав] Или это кодирование просто способ сказать ему читать 8-битные байты, не интерпретируя их? [Тогда \ u00a8 будет правильным кодом для «š».] –
Я тестировал с \ u00a8 вместо \ u0161. Такая же ошибка. – simsulla
Корректировка самого себя: Использование \ u00a8 действительно работает.Ира Бакстер кажется, что вы правы. Кодирование всего лишь способ сообщить ему читать 8-битные байты. – simsulla