2
我需要創建JFlex的解析器從輸入文件中提取的所有單詞,包括那些重音字符像A,E,I,O,U,ñ,...JFlex的和重音符號
我問題在於即使設置了所有使用UTF8編碼和%unicode標記的文件,我也無法使其識別這些字符。
的.lex文件是這樣的:
import java_cup.runtime.*;
%%
%class ParserLex
%unicode
%public
%final
%cup
%init{
%init}
%{
private Symbol sym(int type) {
return sym(type, yytext());
}
private Symbol sym(int type, Object value) {
return new Symbol(type, yyline, yycolumn, value);
}
%}
Token = [áéíóú]
ANY = .
%%
{Token}
{ System.out.println(yytext()); }
{ANY}
{ }
我的測試類是像這樣的:
class ParserTest {
public static void main(String[] args) throws IOException {
InputStreamReader reader = new InputStreamReader(new FileInputStream(args[0]), "UTF8");
ParserLex parser = new ParserLex(reader);
for (Symbol sym = parser.next_token(); sym.sym != 0; sym = parser.next_token()) {
}
reader.close();
}
}
有關此問題的任何意見或建議嗎?
我會開始通過改變你的測試使用StringReader來儘量減少一些操作系統字符集設置的機會搞砸了你。否則,這對我來說很好。你是否檢查過生成的.java文件以查看可能出錯的內容? – Recurse