15得票3回答
开发抽象语法树

我搜遍了互联网,寻找有关C#抽象语法树开发的新手信息,但我只能找到针对已经“知道的人”的信息。我是一名业务应用程序开发人员,因此这些主题有点难度,但这是为了自己的教育,所以我愿意花时间学习必要的概念。 通常来说,我想了解从代码字符串中开发代码的抽象表示背后的技术。更具体地说,我想能够使用这个...

15得票6回答
Scala中的Scala AST

是否有一个Scala库可以解析Scala并创建抽象语法树(AST)? 理想情况下,我对Scala库感兴趣。备选方案是Java库。 (我知道可以利用来自 Scala Syntax Summary的EBNF。)

15得票3回答
解析树和推导树有什么区别吗?

AST(抽象语法树)、解析树和推导树这些术语在不同人士的口中,是指解析符合语法规则的文本所得到的结果。假设我们正在讨论计算机语言的解析,这些术语之间的差异是否足够微小,以至于我们可以互换使用这些术语?如果不能,我们应该如何正确地使用这些术语?

14得票6回答
F# 解析抽象语法树

什么是使用 F# 解析 AST 并构建解释器的最佳方法?有许多 F# 的示例适用于简单的语法(基本算术操作),但我似乎找不到适用于具有更大范围特性的语言的示例。 区分联合看起来非常有用,但如果选项很多,应该如何构造它?是在其他地方定义类型(例如加法、减法、条件语句、控制流)并将它们作为预定义...

14得票1回答
在Groovy中,@Delegate和@Mixin AST转换之间的区别

@Delegate 和 @Mixin 是 Groovy 中的 AST 转换,它们有什么区别呢? 也许我的问题涉及面向对象编程和应用不同的模式,但我都使用过并且可以实现相同的行为。class Person { String name = "Clark" def walk() { ...

14得票4回答
在Haskell中浏览和修改基于Free monad构建的ASTs

我试图使用Free monad来构建AST,这是基于我在网上阅读的一些有用的文献。关于实际操作中处理这些类型的AST的问题,我总结为以下示例:假设我的语言允许以下命令:{-# LANGUAGE DeriveFunctor #-} data Command next = DisplayCh...

14得票1回答
在编译(g++)之前,是否有可能查看实例化模板的C++代码?

g++编译器有一个标志(-E)可以生成宏展开代码,因此我想知道在实际编译之前是否有一种方法可以查看模板实例化后的程序代码?

14得票4回答
如何在对象上下文中执行 Python 的 'eval' 函数?

有没有可能做类似这样的事情c = MyObj() c.eval("func1(42)+func2(24)") 在Python中,如何让func1()和func2()在对象“c”的作用域内进行评估(如果它们是该类定义内的成员函数)?我无法进行简单的解析,因为对于我的应用程序,评估字符串可能变得任...

14得票3回答
如何确定(函数的源代码中)是否包含循环?

假设我有一堆函数 a, b, c, d 和 e,我想找出它们是否直接使用了循环:def a(): for i in range(3): print(i**2) def b(): i = 0 while i < 3: print(i...

13得票2回答
我该如何将Markdown解析为AST,对其进行操作,并将其写回Markdown格式?

我希望能通过编程的方式修改Markdown文件。 我查看了一些Markdown解析器并尝试了其中的几个,分别是Marked、Markdown-it和Commonmark。它们都提供了一个抽象语法树(AST),这使得我可以轻松地修改内容。 问题在于它们只能渲染为HTML。我找不到有关将其转回Ma...