2
내가 N, U, O, A, I, é 같은 악센트 문자를 포함하여 입력 파일에서 모든 단어를 추출하는 JFlex으로 파서를 만들 필요가
, ...JFlex과 악센트 문자
내 문제는 UTF8 인코딩과 % unicode 태그를 사용하여 모든 파일을 설정하더라도 해당 문자를 인식 할 수 없다는 것입니다.
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}
{ }
그리고 내 테스트 클래스는 이와 같은 것입니다 :
.lex이다 파일은 다음과 같습니다
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();
}
}
이 문제에 대한 어떤 아이디어 나 조언을?
일부 OS charset 설정이 당신을 망칠 가능성을 최소화하기 위해 StringReader를 사용하도록 테스트를 변경하면됩니다. 그렇지 않으면 나에게 좋을 것 같습니다. 생성 된 .java 파일을 검사하여 잘못된 점을 확인 했습니까? – Recurse