abstract-syntax-tree

    0熱度

    1回答

    我想找到一種不具有任何父在這個腳本調用表達式: 1 + 1 function parent() { 2 + 2 } 3 + 3 在這裏,我想1 + 1和3 + 3節點,但不2 + 2。 我想達成什麼會是這樣的: j(file.source).find(j.ExpressionStatement, { parent: null }); 所以有一個過濾器,允許發

    4熱度

    1回答

    我正在通過AST變換增長一種小型編程語言。也就是說,從虛擬機開始,慢慢添加一些幫助程序員的層。 由於每一層都知道如何將其新的類型,我做了這樣的事情: module AST0 = struct type t = [ | `Halt | `In | `Out | `Add of (int * int * int) | `Sub of (in

    1熱度

    1回答

    我想映射變量聲明和方法調用到他們被聲明/調用的地方。我正在開發一個獨立的應用程序。 這是我到目前爲止有: public class HelloWorld { static ArrayList methodsDeclared = new ArrayList(); static ArrayList methodsInvoked = new ArrayList(); sta

    0熱度

    2回答

    我知道任何源代碼都可以轉換爲AST。現在我想將該AST轉換回源代碼,但是與語言無關。有什麼工具可以幫助我嗎? 通過獨立於語言,我特別指python和java。

    0熱度

    1回答

    我想用Eclipse JDT的AST來解析java文件。 ASTVisitor提供了一個很好的API來遍歷所有節點並使用我們想要的節點。現在我想要的是,我們可以去目標節點,比如說類型MethodDeclaration還是所有類型的節點,而不是遍歷所有節點?因爲如果我必須在整個包中獲得特定類型的所有節點,這會減少時間。提前致謝。

    1熱度

    1回答

    python依賴於__class__變量在cell中調用super()。它從第一個堆棧幀中的free變量中獲取此單元格。 奇怪的是雖然這個變量不在locals()中,並且它只是從__init__方法中引用它。 就拿這段代碼: class LogicGate: def __init__(self,n): print(locals()) a = __class__

    2熱度

    1回答

    我正在使用F#語言,經過測試,我發現運行時花費超過90%的時間來比較平等。因爲這種語言太慢而無法使用。在檢測過程中,GetHashCode函數在列表中顯示出相當高的值作爲開銷的來源。發生什麼是在方法調用期間,我正在使用方法體(Expr)以及調用參數作爲字典中的鍵,並觸發對AST段的重複遍歷。 爲了提高性能,我想在AST增加記憶化的節點。 type Expr = | Add of Expr * E

    6熱度

    2回答

    我正在使用antlr v4爲其他目的提取Java程序的分析樹。我從這個樣本開始:ANTLR v4 visitor sample 而且我已經測試給定鏈路上的步驟檢查是否正常工作,一切都消失了右: java Run a = 1+2 b = a^2 c = a+b*(a-1) a+b+c ^Z Result: 33.0 然後我寫我自己來解析Java程序的結構如下: |_Java.g4

    1熱度

    1回答

    使用ast.NodeTransformer時,是否有簡單的方法可以返回多個節點來替換單個節點?例如,假設我要形式 f(g())的所有表達式改寫爲_x1 = g(); g(_x1) 這將是很容易做到這一點,如果visit_Expr可以返回多個,而不是一個單一的節點。我似乎無法得到那個工作,所以我認爲這是而不是的方式來做到這一點。任何建議將不勝感激。 [Update] 作爲一個更新,我的這一個工作版本

    0熱度

    2回答

    我使用Eclipse JDT修改的源代碼的AST。我想修改一個MethodDeclaration節點。爲此,我使用ASTVisitor訪問了該文件並進行了更改。現在我刪除了過去的節點,並試圖使用ListRewrite.insertAt()方法在相同位置添加新節點。爲此,我想在刪除節點之前獲取節點的索引。我如何獲得索引?