簡體   English   中英

如何使用javaparser獲取二進制子表達式

[英]How to get binary subexpressions with javaparser

我正在使用javaparser解析Java源文件的AST。

我想將源代碼中的所有二進制子表達式作為單個節點獲取。 這是我正在解析的源代碼:

class MyClass {
  public MyClass() {
    double x = (4 / 10.0) + 15;
  }
}

我實現了一個Visitor,該Visitor接受內置的BinaryExp類型,但是它找到的唯一節點包含二進制表達式:

(4 / 10.0) + 15

有沒有辦法訪問子表達式“(4 / 10.0)”? 我嘗試獲取完整表達式的“左操作數”,但是它的類型為Expression,而不是我期望的BinaryExpr。

任何幫助,將不勝感激。

左操作數不能為Expression的實際類型,因為Expression是抽象類。

  • 您可以通過檢查binEx.getLeft() instanceof BinaryExp檢查實際類型。如果該值為true,則可以binEx.getLeft() instanceof BinaryExp為BinaryExpression。
  • 但是可能它的計算結果為false,並且該節點的類型為EnclosedExpr (括號)。 那么二進制表達式是左節點的子代

這可能無法解決整個問題。 我認為您錯過了將訪問者應用於子節點。 您必須調整visit(BinaryExpr n, A arg)

  • 如果您使用GenericVisitorAdaptor ,則必須調用super.visit(n,arg)
  • 如果您編寫了自己的適配器,則必須在每個子代上調用accept(this, arg)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM