abstract-syntax-tree 相关问题

抽象语法树(AST)表示正式文档(程序源代码)的递归结构。

eslint 无限制语法选择器,用于防止 typescript 品牌类型的划分

我有以下打字稿类型: 导出类型 Milliseconds = number & { __type: 'milliseconds' }; 我想阻止任何人像这样使用除法运算符: 常量 foo = 1 作为

回答 1 投票 0

为什么 libclang 找不到函数参数声明?

我正在编写一个工具来查找 C 函数的依赖项。例如,在 tcpdump 项目中,print-ppp.c 中有一个函数 static void ppp_hdlc(netdissect_options *ndo, const u_char *p, int

回答 1 投票 0

在rustc_ast中,如何匹配TokenStream(一个抽象的token序列)

我使用 rustc_ast::tokenstream::TokenStream 我在控制台中打印了 TokenStream: value2.tokens 的内容: TokenStream( [ 代币( 令牌{ 种类:身份( ...

回答 1 投票 0

在 C++ 源文件中使用 clang [关闭]

我必须使用 MPI 程序为输入的 C++ 生成一个 AST,但如果我需要使用解析器或词法分析器,我会感到困惑?

回答 0 投票 0

Pandas 在 literal_eval 之前将字符串列表中的 nan 值隐藏为 None 并转换回 np.nan

我有一个包含几个系列的数据框,其中包含包含 nan 值的浮点数列表。例如。 s[0] = '[1.21, 1.21, 南, 南, 100]' 我想使用 literal_eval 将这些字符串转换为列表。什么...

回答 2 投票 0

使用 Python AST 模块,解析用作参数的可调用对象

我正在编写一个脚本,它将遍历各种 Python 模块,并寻找调用 fx.bind() 的实例。这个函数的第一个参数是一个代表热键的字符串,然后是...

回答 0 投票 0

如何在 Java 中解析函数/表达式?

我的应用程序将使用像 concat(upper(firstName), concat(" ", upper(lastName))) 这样的字符串,其中 firstName/lastName 是保存一些来自外部或 my_subs 的值的变量...

回答 0 投票 0

缩小打字稿

我正在尝试缩小打字稿(uglify 可以缩小 javascript 的方式)。是否有一个预先存在的包?基本上,我想要一个输入打字稿文件的打字稿代码/包(作为一个 str ...

回答 0 投票 0

AST-Tree 的类型检查器

我在为我的 AST 树创建类型检查器时遇到了很多麻烦。我总是收到错误消息“useCaseSensitiveFileNames”。我认为问题是我没有创建 ts.program

回答 0 投票 0

在 Python 中使用 AST 计算最大继承级别

我正在编写 Python AST 来分析给定 Python 项目中的源代码属性。 特别是,我需要计算所有 Python 类的最大继承级别。 示例:如果我有三个

回答 1 投票 0

使用 Python AST 从上下文管理器的关键字中获取值

我正在尝试获取名为“dag”的上下文管理器中关键字“tags”的值(列表)。 从 airflow.models 导入 DAG 有向无环图( dag_id='my_dag', tags=['dbt', 'marketing', 'schema...

回答 2 投票 0

使用 Python 的 ast 库解析 .py 文件后计算函数代码行数时出错

ast处理后的行数不完整,只有前两个是完整的,'draw questions'之后的所有内容都不完整。 lineCount.py 在这里 进口AST def get_function_i ...

回答 1 投票 0

How to unparse an ast tree in python using asttokens?

我试图在对该代码进行一些更改后将 python 中的 AST 树解析回源代码,但是空行等格式丢失了。调用 ast.u 时如何保留格式...

回答 2 投票 0

使用ast从数据集中提取值并得到空列表

这是数据集: [{“膳食”:“我的食物”,“菜肴”:[{“营养”:[{“名称”:“卡路里”,“价值”:“412”},{“nam ...

回答 0 投票 0

如何在注解处理环境中查找匿名类?

我正在用 Java 8 编写注释处理器。 假设我的项目中某处有这样一个类: 公共课样本类{ public void foo(int i) { 新的可运行(){ ...

回答 0 投票 0

生成 Python 的 AST 的文本表示

有了 Clang,我们可以做到: clang -cc1 -ast-dump j.c TranslationUnitDecl 0x7fbcfc00f608 <> |-TypedefDecl 0x7fbcfc00fea0 <> 有了 Clang,我们可以做到: clang -cc1 -ast-dump j.c TranslationUnitDecl 0x7fbcfc00f608 <<invalid sloc>> <invalid sloc> |-TypedefDecl 0x7fbcfc00fea0 <<invalid sloc>> <invalid sloc> implicit __int128_t '__int128' | `-BuiltinType 0x7fbcfc00fba0 '__int128' |-TypedefDecl 0x7fbcfc00ff08 <<invalid sloc>> <invalid sloc> implicit __uint128_t 'unsigned __int128' | `-BuiltinType 0x7fbcfc00fbc0 'unsigned __int128' |-TypedefDecl 0x7fbcfc0101b8 <<invalid sloc>> <invalid sloc> implicit __NSConstantString 'struct __NSConstantString_tag' | `-RecordType 0x7fbcfc00ffd0 'struct __NSConstantString_tag' | `-Record 0x7fbcfc00ff58 '__NSConstantString_tag' |-TypedefDecl 0x7fbcfc010250 <<invalid sloc>> <invalid sloc> implicit __builtin_ms_va_list 'char *' | `-PointerType 0x7fbcfc010210 'char *' | `-BuiltinType 0x7fbcfc00f6a0 'char' |-TypedefDecl 0x7fbcfc0104f8 <<invalid sloc>> <invalid sloc> implicit __builtin_va_list 'struct __va_list_tag [1]' | `-ConstantArrayType 0x7fbcfc0104a0 'struct __va_list_tag [1]' 1 | `-RecordType 0x7fbcfc010320 'struct __va_list_tag' | `-Record 0x7fbcfc0102a0 '__va_list_tag' |-FunctionDecl 0x7fbcfb844200 <j.c:3:1, line:12:1> line:3:5 main 'int ()' | `-CompoundStmt 0x7fbcfb8447b8 <col:12, line:12:1> | |-DeclStmt 0x7fbcfb844350 <line:4:3, col:8> | | `-VarDecl 0x7fbcfb8442f0 <col:3, col:7> col:7 used e 'int' .... 有没有办法用 Python 的 AST 来做? 我找到了astdump:https://pypi.org/project/astdump/ 但它不打印标记的文字: >>> import astdump >>> astdump.indented('2+3') Module Expr BinOp Num Add Num 我需要能够从 AST 重构整个代码。 Python 3.9+ 更新:标准库中的 ast.dump 函数现在有一个可选的关键字参数 indent 用于 Python AST 的漂亮打印。您可以传递一个整数来表示空格数,也可以传递一个字符串。 astpretty 库 似乎适合您的目的。这个库有一个漂亮的打印函数pprint,它以可读的格式呈现 AST 的树结构,包括节点类型和内容。您需要将它与 Python 标准库中的 ast.parse 结合起来。 pprint的默认行为更详细,包括每个节点的行号和列偏移量,但这可以通过参数show_offsets=False禁用。下面的用法示例来自 astpretty 库的自述文件。 >>> astpretty.pprint(ast.parse('x += 5').body[0], show_offsets=False) AugAssign( target=Name(id='x', ctx=Store()), op=Add(), value=Num(n=5), ) 请注意,如果您不需要漂亮的打印,那么标准库的 ast.dump 将起作用。输出会有点可读性,但不那么可读,因为它没有缩进显示树结构: >>> print(ast.dump(ast.parse('x += 5').body[0])) AugAssign(target=Name(id='x', ctx=Store()), op=Add(), value=Num(n=5)) 不再需要用于漂亮打印的单独库,因为 ast.dump 支持 indent 参数。这是一个例子: >>> import ast >>> print(ast.dump(ast.parse("print('Hello, world!')"), indent=4)) Module( body=[ Expr( value=Call( func=Name(id='print', ctx=Load()), args=[ Constant(value='Hello, world!')], keywords=[]))], type_ignores=[])

回答 2 投票 0

如何使用 Clang 提取循环条件?

我想从 C 程序的解析树中提取循环条件。我已经找到了使用 Clang 编译器查看抽象语法树(解析树)的命令。查看pa的命令...

回答 1 投票 0

如何使用 esquery 和 ts-morph?

如何将esquery与ts-morph结合使用,通过类似于CSS的查询路径从抽象语法树(AST)中检索节点?例如,给定查询路径 CallExpression >

回答 0 投票 0

如何在 python 中显示错误列表

来源=“”“ x = 1 d = {x: 2} y = d[x] c=f+1 """ 运行此代码时 c=f+1 将给出错误,因为 f 未定义,但我也想给出带有 t 的变量列表...

回答 2 投票 0

如何在听 Antlr4 语法时匹配标记?

我一直在研究基于别人写的非常大的语法的语言实现。我正在使用 Antlr 4.12 并以 C# 为目标。一切都很顺利,我取得了很多进步......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.