Я использую цель 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)
Спасибо, Ангел