问题标签 [abstract-syntax-tree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 ANTLR 构建自己的 C# 编译器:编译单元
我可以用 compiler_unit_return 类型的 x 做什么来提取它的根、它的类、它的方法等?我必须将其适配器提取出来吗?我怎么做?请注意,compile_unit_return 在我的 CSParser(由 ANTLR 自动生成)中是这样定义的:
但是我得到的树是对象类型。我使用调试器运行,似乎看到它属于 BaseTree 类型。但是BaseTree是一个接口!我不知道它与 BaseTree 有什么关系,也不知道如何从这棵树中提取细节。
我需要编写一个访问者,它访问了它的类、方法、变量等。 ParserRuleReturn 类从 RuleReturnScope 扩展并有一个开始和停止对象,我不知道它是什么。
此外,ANTLR 提供的 TreeVisitor 类看起来令人困惑。它需要一个适配器作为参数传递给它的构造函数(如果没有,它将使用默认的 CommonTreeAdaptor),这就是为什么我询问如何获取适配器早期的原因。还有其他问题。API可以参考http://www.antlr.org/api/CSharp/annotated.html
java - Eclipse 中的 ASTVisitor
我正在学习如何为一个项目做一个 ASTVisitor,所以我开始使用 Eclipse,它有一个全面的 API。
我已经从这个网站下载了打包的示例项目:http: //www.eclipse.org/articles/article.php? file=Article-JavaCodeManipulation_AST/index.html
但我意识到代码没有 main() 方法,但我能够运行程序!有谁知道为什么?[问号 1]
然而,这些代码似乎过于编译而无法使用,并且做一些基本操作的说明也不是很清楚。
所以我也继续看这个: http ://www.vogella.de/articles/EclipsePreferences/article.html
任何人都知道如何编写一个主要方法来调用执行(ExecutionEvent 事件)?-- 提供一个示例代码片段?[qn 2] 我不知道如何使用 ExecutionEvent...
我不断收到“线程“主”java.lang.IllegalStateException 中的异常:工作区已关闭。” 即使我删除了执行事件的参数(也需要删除扩展部分)或在我的 main.js 中使用部分代码。似乎与IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot()
. 有谁知道为什么?[问号 3]
c# - Microsoft CCI - 资源,编写编译器的参考资料
前段时间,我正在研究编译器,我曾经System.Reflection
从我的 AST 生成代码 (IL)。现在,我对另一个我想开发的编译器有了一个想法(这将是另一个宠物项目,不会在生产代码中使用任何东西,至少现在不会)。
如您所知,与生产代码相比,宠物项目有一个很大的优势:您可以尝试并失败。因此,我决定尝试使用Microsoft 的 CCI编写编译器。
我发现的唯一好的参考是基本语言的示例编译器(这是 codeplex 上 CCI 的一部分),但是,我更希望有一些其他资源,更像是教程、书籍、文章,我可以在其中获得除了学习代码之外的更多信息(这并不总是学习某些东西的最佳方法,因为您看到了解决方案,但您不知道您有哪些替代方案,或者此类代码为何有效)。
那么:在编写编译器和处理 AST 的背景下,您有任何关于 CCI 的资源(教程、书籍)吗?
c# - C# 中的 System.Linq.Expressions 用于什么?
LINQ 是 .NET 4.0 中的一项新功能,在 .NET 3.5 等旧版本中不受支持吗?它有什么用?它似乎能够构建表达式树。实际上,什么是表达式树?LINQ 是否能够从 C# 文件中提取类、方法和字段等信息?
有人可以为我提供一段工作代码来演示 LINQ 可以做什么吗?
c# - LINQ 表达式树最多可以做什么?
LINQ 表达式树可以做的最大值是多少?
它可以定义一个类吗?具有所有声明的名称、修饰符、参数类型和返回类型的方法怎么样?
程序必须总是定义树本身吗?是否可以从给定的 C# 文件生成树?
python - 转换 Jython 的源 / ast
我有一个问题要在 Jython 中解决。我得到的功能如下所示:
有很多看起来像这样的测试,它们主要包含 ok=... 测试,但也有一些其他的事情要做。我知道哪些函数是可测试的,因为它们只来自一个命名空间(或者我可以保留“ok =”部分)。问题是 - 如何自动转换源,所以我只写:
其余的是自动生成的?
我知道 unparse 和 ast - 有没有更好的方法来解决这个问题?(是的,我知道 - 也许像 monad)我rope
也在看图书馆,无法决定......在这里选择哪种方式最好?我描述的转换是我唯一需要的转换,我不介意创建一个将包含在真实代码中的临时文件。
antlr - ANTLR 表达式语法
我正在尝试实现表达式处理语法(处理嵌套括号和东西)。到目前为止,我有以下内容,但他们无法处理某些情况(成功/失败情况出现在以下代码块之后)。有谁知道发生了什么?
注意:varname +=和varname = stuff 只是 XText 中一些额外的 AST 生成助手。暂时不用担心他们。
这是解析/失败的列表:
python - 如何将未引用的 Python 函数/lambda 转换为 AST?2.6
这似乎应该很容易,但我无法在任何地方找到答案——我自己也无法得出答案。如何将未引用的 python 函数/lambda 转换为 AST?
这就是我想做的事情。
python - 有没有办法以编程方式生成 Python 字节码?
我想破解 Python 解释器并尝试创建一个小的 DSL 。有没有我可以做类似这个理论代码的模块(类似于 LINQ 表达式树)?
还是只生成 Python 源代码会更容易?使用 C 或 SWIG 或 Cython 可以使这更容易吗?
c# - 在 C# 中编写解析器的最佳/最快方法
在 C# 中构建解析器以解析我自己的语言的最佳方法是什么?理想情况下,我想提供一种语法,并将抽象语法树作为输出。非常感谢,内斯特