【问题标题】:How to view Clang AST?如何查看 Clang AST?
【发布时间】:2013-09-04 18:48:25
【问题描述】:

我正在尝试控制 Clang。所以,我想在解析给定程序后查看 Clang 生成的 AST。是否可以以 .dot 或 .viz 格式转储 AST?有什么工具吗?

【问题讨论】:

    标签: clang llvm abstract-syntax-tree


    【解决方案1】:

    -cc1 调用 will have problem with includes 并识别 C++ 的方法。

    对于全功能解析,使用:

    clang -Xclang -ast-dump file.cpp
    

    【讨论】:

    • 啊,这是我总是忘记的开关。这会在 Windows 中以漂亮的颜色打印 AST ^^
    【解决方案2】:

    Clang 支持使用 Graphviz 的 dotty 显示 AST——您可以抓取生成的临时 .dot 文件(名称打印出来)以获取图形源。

    clang -cc1 -ast-view your_file.c
    

    您也可以使用以下命令打印到命令行:

    clang -cc1 -ast-dump your_file.c
    

    或:

    clang -cc1 -ast-print your_file.c
    

    或在 3.3 中:

    clang -cc1 -ast-dump-xml your_file.c
    

    但这个 was removed 稍后正如 Lukas Kubanek 在评论中指出的那样。

    【讨论】:

    • -ast-view 似乎也需要编译时支持,在 Ubuntu 14.04 上默认情况下不启用 :-( -ast-dump 工作得很好。-ast-print 应该做什么?它只是打印之后用一些空行编写自己的代码。
    • 根据修订评论,xml 打印机实际上从未正常工作过。
    • 最近clang也可以使用-ast-dump=json,非常好用!如果您不介意,可以将此添加到您的答案中。
    【解决方案3】:

    用于查看 AST

    clang-check -ast-dump filename.c

    用于查看程序中的具体功能

    clang-check -ast-dump -ast-dump-filter=function_name filename.c

    【讨论】:

      【解决方案4】:

      我正在使用以下内容:

      clang my_file.h -I. -Xclang -ast-dump -fsyntax-only -fno-color-diagnostics -Wno-visibility
      

      恕我直言,这更适合机器解析。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多