abstract-syntax-tree

    2熱度

    1回答

    我已經安裝了Visual C++ 2015的Clang和Codegen。我做了一個新的控制檯應用程序,它打印出「Hello,world!」並設置平臺工具集兩種調試x86和版本的x86到: 鏘3.7與微軟的CodeGen(v140_clang_3_7) 我關掉預編譯頭,並在C/C++ - >命令行,我在這兩種調試86增加了新的命令和Release 86: -ast突降 我再建程序調試模式。該計劃成功

    3熱度

    1回答

    如何使用Roslyn語法工廠爲整型文字(比如說2)創建表達式? 當我在調試器中查看它時,它看起來像是NumericLiteralExpression,但我找不到如何創建它? 最近,我發現了SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression, SyntaxFactory.Token(..)),但我不知道如何創建一個憑

    0熱度

    2回答

    這是我的代碼。 我正在做CompilationUnit有 ASTParser parser = ASTParser.newParser(AST.JLS8); parser.setResolveBindings(true); parser.setStatementsRecovery(true); parser.setBindingsRecovery(true); parser.setKind

    1熱度

    1回答

    我寫了AST變換創建一個JPA映射屬性的設置(這兩種設置本地現場和關係的另一端調用setOwner): private static void createSetter(FieldNode field) { Parameter parameter = GeneralUtils.param(field.getType(), field.getName()); BlockStat

    7熱度

    3回答

    我與抽象語法樹在Python 3工作的ast庫提供了多種方式來獲取節點的孩子(你可以使用iter_child_nodes()或walk()),但沒有辦法得到父一個。另外,每個節點都有鏈接到它的子節點,但它沒有鏈接到它的父節點。 如何我可以得到AST節點的父節點如果我不想寫一些插件到ast庫? 什麼是最正確的方法來做到這一點?

    1熱度

    1回答

    我正在使用名爲CUP的解析器生成器。我爲這個類定義提供了語法(CUP規範)和這段支持代碼(Expr.java)。 在CUP規範,語法制作有他們這樣相關的語義動作: expr ::= expr:e1 PLUS expr:e2 {: RESULT = new OpExpr(e1,e2,sym.PLUS); :}; 類定義是這樣的: package java_cup.output; abstra

    1熱度

    1回答

    比方說,我有一個函數f: def f(): ... 有一個簡單的方法來找到參與f輸出所有功能(源代碼+路徑)和類(源代碼+路徑)?例如,如果f使用導入的函數g來計算其輸出,那麼我們能得到源碼g +它的路徑嗎? 也許蟒蛇ast或dis圖書館能夠做到這一點優雅?

    4熱度

    1回答

    我一直在使用Language.C library的抽象語法樹(AST)來使用SYB library的一般轉換來修改C程序。這個AST有不同類型的節點(數據類型),每個節點代表一個C構造,即表達式,語句,定義等等。我現在需要增加語句攜帶的信息,即註釋它們。我曾經認爲(也許我是錯的),我不能修改或重新定義原始數據類型,所以我想有這樣的事情: annotateAST anns = everyw

    0熱度

    1回答

    我正在構建一個生成void方法的AST轉換。我想檢查傳入的值是否已經等於另一個值,如果是,請儘早退出。該代碼通常會是這樣的: if(param.is existing) { return } 的ReturnStatement類有檢查,看看返回的表達式是null屬性returningNullOrVoid,所以我嘗試了明顯的方法: ifS(sameX(paramEx, existing

    1熱度

    1回答

    我正在制定一個自定義規則ESLint。 基本上是: module.exports = function (context) { var file = context.getSource(); var fileName = context.getFilename(); var lines = file.split(/\n/); lines.forEach(fu