저는 학교 프로젝트를하고 있습니다. 우리는 정적 코드 분석기를 만들고 있습니다. 이 요구 사항은 Java에서 C# 코드를 분석하는 것인데, 이는 ANTLR에서 지금까지 매우 훌륭하게 진행되고 있습니다.ANTLR을 사용하여이 인코딩을 어떻게 얻을 수 있습니까?
Visual Studio에서 ANTLR로 스캔 할 몇 가지 예제 C# 코드를 만들었습니다. 솔루션의 모든 C# 파일을 분석합니다. 그러나 그것은 효과가 없습니다. 모든 파일이 UTF-8에 있기 때문에, 나는 그것이 인코딩에 문제라고 생각 잠시 후
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at org.antlr.runtime.Lexer.emit(Lexer.java:151)
at org.antlr.runtime.Lexer.nextToken(Lexer.java:86)
at org.antlr.runtime.CommonTokenStream.fillBuffer(CommonTokenStream.java:119)
at org.antlr.runtime.CommonTokenStream.LT(CommonTokenStream.java:238)
: 나는 메모리 누수 및 오류 메시지를 받고 있습니다. 인코딩 된 스트림을 읽을 수 없다고 생각합니다. 그래서 나는 Notepad ++를 열었고 모든 파일의 인코딩을 ANSI로 변경했다. 나는 ANSI가 무엇을 의미하는지,이 문자 집합 또는 어떤 종류의 조직인지를 정말로 이해하지 못한다.
인코딩을 (아마도 UTF-8)에서이 ANSI 인코딩으로 변경하여 메모리 누수가 더 이상 발생하지 않도록하고 싶습니다.
이것은 렉서와 파서를 만드는 코드는 다음과 같습니다
InputStream inputStream = new FileInputStream(new File(filePath));
CharStream charStream = new ANTLRInputStream(inputStream);
CSharpLexer cSharpLexer = new CSharpLexer(charStream);
CommonTokenStream commonTokenStream = new CommonTokenStream(cSharpLexer);
CSharpParser cSharpParser = new CSharpParser(commonTokenStream);
- 사람이 바로 인코딩에의 InputStream의 인코딩을 변경하는 방법을 알고 있나요?
- 그리고 인코딩을 ANSI로 변경하면 Notepad ++에서 무엇을합니까?
Pastebin과 같은 사이트가 올바른 인코딩을 유지하는지 잘 모르겠습니다. 하지만 여기에 예제가 있습니다 : http://pastebin.com/ji8AHcRN –