22得票4回答
Go解析器未能检测到结构类型的文档注释

我正在尝试使用Go的parser和ast包阅读结构类型上关联的文档注释。在这个例子中,代码只是将自身用作源。 package main import ( "fmt" "go/ast" "go/parser" "go/token" ) // FirstTyp...

22得票4回答
解析器组合器,将语法和AST构建分离

我正在使用解析器组合库(parser-combinators library)在Scala中编写一个简单的函数式程序语言。 语法规范在这里: https://github.com/hejfelix/Frase/blob/master/src/main/scala/it/vigtig/lamb...

22得票6回答
PHP中用于正则表达式解析的解析器?

我需要在PHP中将正则表达式解析为它们的组成部分。我可以创建和执行正则表达式,但我希望显示有关正则表达式的信息(例如,列出捕获组,在其目标上附加重复字符等)。整个项目是WordPress插件,提供有关重写规则的信息,这些规则是带替换模式的正则表达式,并且可能很难理解。 我自己编写了一个简单实...

21得票2回答
编译成字节码的动机是什么?

我正在开发自己的玩具编程语言。目前,我正在通过AST解释源代码,并想知道将其编译成字节码然后再解释它能为我提供什么优势。 目前我有三个想法: 遍历语法树数百次可能比在数组中运行指令更慢,特别是如果该数组支持O(1)随机访问(即向上和向下跳10条指令)。 在静态类型执行环境中,由于我的AS...

20得票4回答
在Python中获取AST节点的父节点

我正在使用Python 3的抽象语法树(AST)。 ast库提供了许多方法来获取节点的子级(可以使用iter_child_nodes()或walk()),但没有方法可以获取一个节点的父级。此外,每个节点都有指向其子级的链接,但它没有指向其父级的链接。 如果我不想编写ast库的插件,那么我如何...

19得票2回答
ast.NodeTransformer的示例,用于修改等式

这是我上一个问题的延续。我想解析一个方程并处理得到的ast。我的目的是随机打乱它,以获得一个新的方程,该方程也必须是有效的函数。这将用于遗传算法。 以下是我的起点: class Py2do(ast.NodeTransformer): def __init__(self): self.t...

19得票12回答
将C#代码转换为AST?

目前是否有将C#代码翻译成抽象语法树的可能性? 编辑:做些澄清,我并不一定希望编译器为我生成AST - 解析器也可以,尽管我想使用一些"官方的"东西。Lambda表达式不够用,因为它们不允许我使用语句体,而这正是我要找的东西。

19得票2回答
如何从 TypeScript AST 解析器生成代码?

读完使用编译器API文章后,我可以从字符串代码中获取AST。 但是当我尝试通过escodegen从AST生成代码(而不是转码)时,我遇到了一个错误: Unknown node type: undefined 有没有一种方法可以生成代码的抽象语法树(AST)? import * as ...

18得票2回答
如何模拟java.lang.Thread的最佳方法?

我正在开发适用于Java 6*1)的变压器,它执行一种部分评估,但为了简单起见,我们考虑一下 Java 程序的抽象语法树解释。 如何通过一个解释程序模拟Thread的行为? 目前我想到了以下方法: AstInterpreter应该实现java.lang.Runnable。它还应该重写每个...

18得票1回答
在AST操作中,使用Rc包裹下行特征

我正在尝试在Rust中操作抽象语法树(AST)。将会有许多操作,并且我想让我的树是不变的,为了节省时间,所有引用都将是Rc。 我的树节点将如下所示:enum Condition { Equals(Rc<Expression>, Rc<Expression>),...