Я пытаюсь написать грамматику antlr3 для небольшого DSL с поддержкой unicode (необходимо для немецких умляутов, äöüÄÖÜß), но я не могу заставить его работать.символы unicode antlr3 вызывают ошибку
Я написал минимальную грамматику теста, который должен соответствовать любой последовательности символов Юникода, как «XAY» (который работает просто отлично) или «Xay» (который не делает.)
Вот грамматика:
grammar X;
@lexer::header {
import org.antlr.runtime.ANTLRInputStream;
import org.antlr.runtime.ANTLRStringStream;
import org.antlr.runtime.CommonTokenStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
}
@lexer::members {
public static void main(String[] args) throws Exception {
ANTLRInputStream stream = new ANTLRInputStream(new ByteArrayInputStream("x\u00C4y".getBytes()), "utf-8");
XLexer lex = new XLexer(stream);
CommonTokenStream c = new CommonTokenStream(lex);
XParser p = new XParser(c);
p.x();
}
}
x : UTF8+;
UTF8 : ('\u0000'..'\uF8FF');
Для "х" Я получаю следующее сообщение об ошибке:
line 1:1 mismatched character '?' expecting set null
Что я упускаю?
Спасибо!
Возможный дубликат [Что такое кодировка символов и почему я должен беспокоиться о нем] (http://stackoverflow.com/questions/10611455/ what-is-character-encoding-and-why-should-i-bother-with-it) – Raedwald