我正在嘗試爲支持Unicode的小型DSL編寫antlr3語法(德語變音符號需要),但似乎無法使其工作。antlr3 Unicode字符導致錯誤
我寫的應該是匹配的Unicode字符的任意序列的最小測試語法,如「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');
對於 「XAX」 我發現了以下錯誤:
line 1:1 mismatched character '?' expecting set null
我缺少什麼?
謝謝!
的可能的複製[什麼是字符編碼,爲什麼我要這麼做吧](http://stackoverflow.com/questions/10611455/什麼是字符編碼和爲什麼我應該打擾它) – Raedwald 2016-01-21 13:18:45