I는 다음과 소스가이 파일 (A.java) 우리가 다른 단어의 많은 빈 라인과 반드시 같은 줄에 쓰여진 하나 개의 명령을 가지고Eclipse JDT Parser에서 구문 분석 된 Java 소스의 행을 가져 오는 방법은 무엇입니까? 내 하드 드라이브에
package DAO;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.CountDownLatch;
public abstract class A {
public class A4{
public String teste4(int i){
return (new String("teste"));
}
}
public class A3{
public String teste3(int i){
return (new String("teste"));
}
public A4 teste33(int i){
return (new A4());
}
}
public class A2{
public A3 teste2(int i){
return (new A3());
}
}
public class A1{
public A2 teste1(int i){
return (new A2());
}
}
public int[] toIntArray(List<Integer> list) {
A1 q=new A1();
Integer t=q.teste1(
(new A1()).
teste1(0).
teste2(0).
teste33(0).
teste4(0).
length()).
teste2(0).
teste3(0).
length();
}
}
주, 그건 어쩌면 여러 줄에 퍼져있을 수도 있습니다 ("toIntArray"의 마지막 줄을보십시오). 이 경우, 모든 빈 줄이 제거 된 것을
package DAO;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.CountDownLatch;
public abstract class A {
public class A4 {
public String teste4( int i){
return (new String("teste"));
}
}
public class A3 {
public String teste3( int i){
return (new String("teste"));
}
public A4 teste33( int i){
return (new A4());
}
}
public class A2 {
public A3 teste2( int i){
return (new A3());
}
}
public class A1 {
public A2 teste1( int i){
return (new A2());
}
}
public int[] toIntArray( List<Integer> list){
A1 q=new A1();
Integer t=q.teste1((new A1()).teste1(0).teste2(0).teste33(0).teste4(0).length()).teste2(0).teste3(0).length();
}
}
참고하고 명령 "정수 : 나는 AST이 소스 코드를 분석 할 때 는"CompilationUnit "의"toString "은 다음과 구조체 (AST 구조체)를 보여 t = q.teste1 .... "이 같은 줄에 쓰여있었습니다. 나에게 좋다. 따라서 "MethodInvocation"방문에서이 호출의 행 번호를 가져 오려고합니다. 이렇게하려면 내가 팔로우 내 astVisitors에서 소스 만들기 :
public boolean visit(final CompilationUnit node) {
this.CompilationUnit=node;
}
public boolean visit(final MethodInvocation node) {
Integer LineInFile=this.CompilationUnit.getLineNumber(node.getStartPosition());
}
그러나 명령 "getLineNumber"을하지 AST 구조체에, 내 하드 드라이브에 소스 파일에 행 번호를 반환합니다. 이 경우 "q.teste1 ((new .....", 명령 "getLineNumber"는 줄 44와 줄 45를 반환하지만 줄 44 만 반환하면됩니다.) 줄을 어떻게 얻는 지 "AST의 구조체"의 숫자?
왜 외부 파일이 아닌 "AST 구조체"에 "줄 번호"를 사용 하시겠습니까? 외부 파일은 사용자가 염려하거나 보았거나 인식 할 수있는 유일한 것입니다. 그녀는 AST 구조체에 전혀 관심이 없다. 그렇다면이 점은 무엇입니까? –