ANTLR4 CSharp Lexer выдает ошибку с файлами исходного кода Unicode - PullRequest
0 голосов
/ 21 мая 2018

Я использую цель CSharp Java - я анализирую некоторый код Csharp, как это:

List<Token> codeTokens = new ArrayList<Token>();
List<Token> commentTokens = new ArrayList<Token>();
//CharStream cs = CharStreams.fromString(contents);
CharStream cs = CharStreams.fromPath(path);
CSharpLexer lexer = new CSharpLexer(cs);
// recognition error happens here: 
List<? extends Token> tokens = lexer.getAllTokens();
List<Token> directiveTokens = new ArrayList<Token>();
ListTokenSource directiveTokenSource = new ListTokenSource(directiveTokens);
CommonTokenStream directiveTokenStream = new CommonTokenStream(directiveTokenSource, CSharpLexer.DIRECTIVE);
CSharpPreprocessorParser preprocessorParser = new CSharpPreprocessorParser(directiveTokenStream);

Если мой исходный код закодирован в ASCII, он работает нормально.Но если это UNICODE, даже если в файле ничего нет, я всегда получаю эту ошибку:

line 1:0 token recognition error at: ''

Нужно ли настраивать мой Lexer по-другому?Ошибка происходит от Lexer.java => getAllTokens () => nextToken () => getInterpreter (). Match (_input, _mode);

Снова, я получаю это даже с пустым файлом в кодировке UNICODE -но он все еще содержит символ U + FEFF:

$ less ApiUserInfo.cs
<U+FEFF>
ApiUserInfo.cs (END)

Спасибо, Ангел

...