abstract-syntax-tree

    1熱度

    1回答

    我想通過從頭開始構建抽象語法樹(沒有任何項目依賴關係或工具,例如Java中的杯子解析器等)來構建正則表達式的解析器。我不想保存正則表達式中包含的所有信息,但是我想盡可能簡化它。 作爲示例,x::=y|z應該導致與字符類x::=[yz]相同的AST。然而,由於正則表達式可以(而且確實)變得非常複雜,我不能決定實現什麼等價。例如,我不知道如何保存負面選擇x::=[^b],這將相當於x::=a|c|d|

    0熱度

    1回答

    所以,如果我需要改變這樣的代碼: var amazed = $(['foo', 'bar']).map(function(i, el){ return this + '!'; }); 到本地像 var amazed = (['foo', 'bar']).map(function(el, i){ return el + '!'; }); 我可以這樣做(https://

    0熱度

    1回答

    所以我努力學習的那一刻的AST,並與一些簡單的功能一直在練習像 var a; var b; b = 666 a = b; print a; 從而結束這樣的: 所以一直試圖瞭解它。我幾乎開始明白,但現在問題來了,當我試圖做這樣的功能: var a; var b; b = 666; a = b+42*6; print a; 給我帶來了麻煩的是,A = B + 42 * 6,我不

    0熱度

    1回答

    作爲一種學習練習,我正在嘗試使用Clang類直接在代碼中構建C++ AST。 NamedDecl構造函數是protected。 如何創建一個NamedDecl實例?

    1熱度

    1回答

    兩個類生成: 家長 @Canonical class Parent { int id } 兒童 @Canonical class Child extends Parent { String name } 當從Java中使用,孩子只有默認和Child(字符串名稱)構造函數(和Map,肯定),但沒有Child(int id)和Child(int ID,字符串名稱)構

    0熱度

    1回答

    我想在python中製作計算Cyclomatic Complexity(CC)程序。 而我使用編譯器(ASTVisitor)模塊時,我在Python代碼中的CC。 但是我不知道可用模塊其他語言如C/C++,Java。 請告訴我,我可以使用模塊都編譯器(ASTVisiter)其他語言, 或模塊,使AST(抽象語法樹)。

    1熱度

    1回答

    我正在使用Clang打印出一些關於AST的信息。 例如: template<typename T> class Slices : public Fruit { T fruit; int numberOfSlices; public: Slices(T fruit, int numberOfSlices) : fruit(fruit), numb

    0熱度

    1回答

    我很滿足以下問題。從CXXConstructorDecl的inits返回一個空列表在以下情形: class Test3 { int a = 2; int b; Test3(); }; Test3::Test3() : b(0) { } 現在,如果我改變Test3的構造函數的定義,我可以把它內聯爲: class Test3 { int a = 2;

    2熱度

    1回答

    據我所知,在解析器構建AST之後,這個結構被轉換爲「中級」IR,例如三個地址代碼或任何其他。然後,爲了執行一些分析,將這個IR轉換成控制流圖。我的問題是,如果有可能從AST表示到CFG而不經過另一個IR,然後執行例如通過CFG進行的數據流分析並取得成功的結果?

    4熱度

    1回答

    我讀過這個鏈接,但仍不能完全理解什麼是http://clang.llvm.org/doxygen/classclang_1_1RecursiveASTVisitor.html 哪種方法寫的時候,我應該重寫TraverseDecl和VisitDecl(及其使用情況)之間的區別TraverseDecl(鐺RecursiveASTVisitor)我的RecursiveASTVisitor?