解析AST树时无法识别分配

时间:2014-10-15 11:04:08

标签: java abstract-syntax-tree

我有以下代码:

package testpackage;
import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TestClass 
 {  
    private static int a = 0;
    public void test1() 
     {
       int b = a + 1;
       int c = 3;
    }       
 }

我用一个ASTVisitor对象解析它:

final CompilationUnit compilationUnit = (CompilationUnit) parser.createAST(null);
compilationUnit.accept(new ASTVisitor() 
 {

   @Override
   public boolean visit(Assignment node) 
   {
      System.out.println("assignment");
      return false;
   }

   @Override
   public boolean visit(TypeDeclaration node) 
   {
      System.out.println("type");
      return true;
   }

   @Override
   public boolean visit(MethodDeclaration node) 
   {
      System.out.println("method");
      return true;
   }

    //more code here
};

解析工作查找类型和方法声明,但不能查找赋值。在我看来,我的示例代码中有3个赋值。但是为什么ASTVisitor对象不能识别它们呢?

1 个答案:

答案 0 :(得分:-1)

您提到的所有三个表达式都是不是赋值表达式。这就是为什么不执行相应的访问的原因。

为了澄清它,第一个表达式是FieldDeclaration。另外两个是VariableDeclarationStatement个。这三个都包含VariableDeclarationFragment s。

这意味着你应该添加以下方法来查看解析过程:

public boolean visit(FieldDeclaration node) {
    System.out.println("field declaration: " + node);
    return true;
}

public boolean visit(VariableDeclarationStatement node) {
    System.out.println("variable declaration: " + node);
    return true;
}