2012-06-14 1 views
1

ASTNode (org.eclipse.jdt.core.dom.ASTNode)의 하위 클래스에서 Equality 연산자 (==)가있는 명령문이 올 것입니다.AST 동등 연산자 (==)가있는 명령문의 노드

비 원시 유형 (예 : Integer)에 대한 비교가 '=='연산자를 사용하여 수행되는 코드의 인스턴스를 찾아야합니다. '=='연산자가 원시 타입 (예 : int)에만 사용되도록하고 싶습니다.

나는이 체크 (JDT 라이브러리 사용)을 수행하기위한 자바 코드 로직을 가지고 있지만 확실하지 나는 그런 문을 액세스하기 위해을 방문해야 ASTNode의 유형.

답변

1

'연산자'가 == (또는 InfixExpression.Operator.EQUALS) 인 경우 'InfixExpressions'를 찾아야합니다.

ASTView을 사용하여 직접 이러한 질문에 대한 답변을 찾을 수 있습니다.

+0

ASTView 링크에 대해 deepak에 감사드립니다. 내가 InfixExpression 노드를 시도하고 돌아올 것입니다. –

+0

시도하고 작동! 감사 .. –

0

전적으로 귀하에 따라 다릅니다. AST는 어떻게 구조화되어 있습니까?

일반적으로이 내가 할 것 인 것이다 : 문법적 정확성을 보장으로

EqualityNode : Node 
{ 
    Node LHS; 
    Node RHS; 
} 

, 그 사람이하지 않는 것입니다 :

if == else

파서에 의해 확인되어야한다 노드가 AST에 추가되기 전에

+0

java를 사용하여 이미 존재하는 코드베이스에서이 작업을 수행하고 있습니다. JDT 라이브러리를 사용하여 클래스를 컴파일 한 다음 준수 클래스에서 반환 된 AST를 방문합니다. 노드가 AST에 추가되기 전에 파서가 검사 한 내용이 무엇인지 확실하지 않습니다. 오해를 해소하기 위해 질문을 업데이트했습니다. –