Rascal:创建 AST 时 boolcollectBindings 的作用是什么?

2024-03-13

我有一个关于在 rascal 中创建 AST 的问题。 我通常会执行以下操作:

model = createM3FromEclipseProject(|project://testproject|);
decls = createAstsFromEclipseProject(model.id, false);

首先我将collectBindings 设置为true。但对于某些项目,我遇到堆栈溢出错误。这可能是因为我使用 Luna eclipse 但它让我想知道集合绑定的作用是什么?

我试图查找它,但我找不到任何文档(也许我的谷歌技能很糟糕)。我还尝试在同一个项目上运行它,并使用不同的集合绑定设置进行比较,但我看不到任何东西。

有人可以向我解释一下集合绑定的作用以及为什么你会(不)使用它吗?

谢谢!!!


CollectBindings 在解析 Java 代码之后执行另一个步骤,即解析代码中可能的所有名称和类型。然后从 Java 编译器收集此信息并直接存储到 Rascal AST 中。

因此,如果您需要精确的限定名称或表达式和变量的类型,那么collectBindings应设置为true。例如在这段代码中:

int a = 0;
int b = a + a;

没有resolveBindings 的两种用途aAST 中不会通过以下方式指向声明@decl注释说|java+variable:///something/a|他们不会知道自己是int()通过@typ注解。即便是int a声明本身不知道其限定名称或其类型。

The StackOverFlowError你看 josvr 在 github 上已经报道过:https://github.com/cwi-swat/rascal/issues/735 https://github.com/cwi-swat/rascal/issues/735。它是由 JDT Java 编译器中的语义更改引起的(可能是错误,也可能是其他原因)。

如果你现在陷入困境,我建议你回到开普勒。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rascal:创建 AST 时 boolcollectBindings 的作用是什么? 的相关文章

  • 自动标记 C 中未使用的结构成员

    我需要一个工具来自动标记未使用的结构成员在 C 代码库中 我对 未使用 的定义很简单 如果从代码中删除结构成员定义 并且代码编译成功 则该结构成员被声明为未使用 问题是 如何以自动化方式完成此操作 由于代码库很小 速度并不是太重要 关于该主
  • 如何使用 PHP-Parser 获取全局变量名称并更改它

    我想用PHP解析器库来获取全局方法 POST GET REQUEST 获取 PHP 中的值 我在用着PHP解析器我想检查节点名称是否等于 POST GET REQUEST 我还是 PHP Parser 的初学者 不知道如何获取这些全局变量
  • 如何在 OCaml 编译器中遍历类型化抽象语法树

    我正在尝试转储 OCaml 项目中所有标识符的类型信息 基本上与遍历类型化抽象语法树相同 https github com ocaml ocaml blob trunk typing typedtree mli https github c
  • 生成 Python AST 的文本表示

    使用 Clang 我们可以做到 clang cc1 ast dump j c TranslationUnitDecl 0x7fbcfc00f608 lt
  • ANTLR 4 和 AST 访客

    我正在尝试将 AST 与 ANTLR4 一起使用 并使用以下文件 生成器 java import org antlr v4 runtime ANTLRInputStream import org antlr v4 runtime CharS
  • 为什么 Java AST 中的表达式“super()”是 Rascal 中的?

    中的表达方式之一Java AST 声明 http tutor rascal mpl org Rascal Libraries lang java m3 AST Declaration Declaration html is Expressi
  • 何时使用抽象语法树或具体语法树?

    我一直在研究编译器 词法分析器似乎非常简单 取一个 句子 并将其分解为单词 或标记 为了确保语法正确 需要解析器 解析器通常采用标记并构建一棵树 该树产生根节点 单词到句子 段落 页面等 From 这个问题 https stackoverf
  • 如何在 Rascal 中将值类型转换为 Map?

    我有一个存储映射的值类型变量 但我无法通过提供键来访问这些值 rascal gt a value s s rascal gt a s stdin 2 3 lt 1 2 gt lt 1 5 gt subscript not supported
  • JS:重命名变量以进行重构(使用 AST,而不是文本)

    我经常需要在重构代码时重命名变量 目前我使用正则表达式以一种有点老套的方式做 我最终不得不使用愚蠢的文本解决方案来解决缺乏实际结构的问题 例如 将 req 重命名为 request 并避免具有类似名称 例如 require 的副作用 想想这
  • 如何使用Antlr实现函数调用,以便在定义之前就可以调用它?

    一旦构建了 AST 实现树遍历器以便可以按任意顺序定义和调用函数的最佳方法是什么 例如 这在 PHP 中是有效的 我猜想一定有第二遍 或者树转换 但我在这个主题上找不到任何有趣的东西 这个问题可能不是 Antlr 特有的问题 但如果你能给我
  • Clang 项目的 AST

    我使用 Clang python 绑定来提取 c c 文件的 AST 它非常适合我编写的一个简单程序 问题是当我想将它用于像 openssl 这样的大项目时 我可以为项目的任何单个文件运行 clang 但 clang 似乎错过了项目的一些标
  • 如何使用 Clang 从 C++ 字符串生成 AST?

    我正在尝试使用 Clang 操作 C 源代码 但在发现 API 时遇到问题 我想获取一串 C 源代码并从中生成 AST 就像是 auto myAst clang parse auto x 1 1 有一个最小的工作示例吗 您可以尝试下一个代码
  • API 来比较 AST? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个开源java api允许比较java源代码的两个抽象语法树 我想看看两个语法树之间的差异 类
  • 将 AST 节点转换为 python 代码

    假设我有以下字符串 code if 1 1 and 2 2 and 3 3 test 1 以下代码将该字符串转换为 AST ast parse code 然后我有一棵树 Module body lt ast If object at 0x1
  • 使用 AST 解析器提取类实现的接口

    我正在使用 AST 解析器编译项目源代码 我可以通过什么方式提取类层次结构信息 即它是否正在实现任何接口或从另一个类扩展 您可以访问TypeDeclaration节点并从中获取类型绑定 ITypeBinding typeBind typDe
  • 用于代码分析的 Java 库

    有没有任何 Java 库可以帮助构建AST http en wikipedia org wiki Abstract syntax tree来自指定的 java 源文件 反之亦然 从 ASTree 对象生成代码 我需要类似的东西this ht
  • 使用带有返回值的访问者模式实现 AST 的最佳方法是什么?

    我正在尝试使用访问者模式在 C 中实现一个简单的抽象语法树 AST 通常访问者模式不处理返回值 但在我的 AST 中 有一些表达式节点关心其子节点的返回类型和值 例如 我有一个这样的 Node 结构 class AstNode public
  • clang:自定义属性在 AST 中不可见

    我按照官方手册中的描述在 clang 中实现了一个自定义属性 http clang llvm org docs InternalsManual html how to add an attribute http clang llvm org
  • Python AST 中的 ExtSlice 节点表示什么语法?

    我正在费力地浏览Pythonast模块并且无法弄清楚切片定义 slice Ellipsis Slice expr lower expr upper expr step ExtSlice slice dims Index expr value
  • 虚拟类作为 Spirit 的 AST 节点

    我当时正在和一个朋友一起开发一种语言的解释器 我们从一个我猜想不太明智的决定开始 我们首先制作所有用于执行的元素 实际上是由不同类组成的树 但现在看着 boost 的例子 我对如何合并两者感到很困惑 我知道从什么开始 语法 我知道要达到什么

随机推荐

  • Angular - 拼接函数总是删除最后一个元素

    我有一个对象数组 我想在单击删除键时删除某些对象 但是 无论我创建了多少行 它总是从行数组中删除最后一项 即使我明确地放入这样的行 scope rows splice 1 1 它仍然会删除最后一个元素 而不是第二个元素 JS angular
  • 无法通过数字键盘使用小数(Android 上的 Xamarin Forms)

    我已经尝试了几个论坛上给出的几种解决方案 也在 Xamarin 论坛上提问 但都没有结果 我想在 Xamarin Forms 中创建一个条目 用户可以在其中添加十进制数 问题是我的数字键盘禁用了逗号 我可以使用自定义渲染器添加点 但由于我住
  • 如何在IIS中部署Angular Universal?

    我在 IIS 中部署角度通用应用程序时遇到问题 在角度通用中 创建了两个 dist 文件夹 一个是用于客户端的 dist 另一个是 dist 服务器 当我尝试托管时 我给出了 dist 文件夹的路径 站点正在运行 但页面未从服务器渲染 我遇
  • HTMLInputElement 没有方法“parent”

    我的页面上有两个非常相似的表单 我在 jquery 中进行简单的验证 以检查每个字段是否都有值 然后再使用 ajax 将数据发送到使用该数据的 php 处理程序 由于表单之间的相似性 我无法知道提交的是哪个表单 所以我想尝试通过表单容器 d
  • 将 Google-Play-Services 添加到库项目

    我正在开发一个地图库 并且正在使用 Google Play Services 到目前为止 一切都很好 问题是这样的 我将 Google Play Services 库项目包含在我的地图库中 使用 属性 gt android gt 添加库 使
  • 我是否应该始终在 Dispose 方法中断开事件处理程序的连接?

    我使用 C 工作 我的工作场所有一些代码标准 其中之一是我们连接的每个事件处理程序 例如KeyDown 必须在断开Dispose方法 这有什么好的理由吗 除非您期望事件的发布者比订阅者活得更久 否则没有理由删除事件处理程序 不是 这是民间传
  • 即使 Access-Control-Allow-Origin 设置为 *,为什么仍会发送多个 OPTIONS 请求?

    我已经构建了一个 API api example com 并希望可以从 www example com 访问它我还希望可以从其他域访问它 为此 我添加了 Access Control Allow Origin 但是当我打开 www exam
  • 如何比较两个边缘图像(在 OpenCV 中)?

    在我的项目中 我需要与图像进行比较 一张图像显示渲染模型 另一张图像是照片 其中显示模型中表示的真实对象 我到底想要什么 该算法必须比较两个图像并返回一个描述相似度的数字 假设数字越低 图像就越吻合 两个图像都表示为二进制图像 仅包含真实渲
  • iOS PNG图像旋转90度

    在我正在编写的 iOS 应用程序中 我处理 PNG 因为我处理 Alpha 通道 由于某种原因 我可以将 PNG 加载到我的imageView很好 但是当需要将图像从我的应用程序复制到粘贴板上或将图像保存到我的相机胶卷时 图像会旋转 90
  • 如何在 swagger 中成功记录多种内容类型的 GET 响应

    假设我们有一个 json swagger 规范示例 swagger 2 0 info version 1 0 0 title Some API basePath api v1 consumes application json produc
  • 如何在 Swift 中使用 dropbox api 获取共享链接?

    我想制作一个应用程序 让用户将文件上传到保管箱 然后获得共享该文件的选项 如何获取文件的保管箱链接 看来我可以用 client sharing createSharedLink 路径 myfile 但我如何以字符串形式访问该数据 这是一个如
  • Windows:自动挂起整个进程? [复制]

    这个问题在这里已经有答案了 使用 Win32 API 只能使用以下命令挂起单个线程SuspendThread 但不是一次调用就能完成完整的过程 迭代进程线程并一次挂起它们并不是一个好的选择 因为它可能会导致死锁和意外行为 这应该是使用 DD
  • thread_local 的成本

    现在C 正在添加thread local存储作为一种语言功能 我想知道一些事情 What is the cost of thead local likely to be 在记忆中 用于读和写操作 与之相关的是 操作系统通常如何实现这一点 看
  • 修复页面滚动时的标题转换

    我一生都无法弄清楚这一点 有谁知道这个网站上的滚动效果是如何创建的 http blindbarber com news http blindbarber com news 我正在开发一个项目 该效果将非常有帮助 这样我的固定导航在滚动时不会
  • 将日期从字符串格式转换为 OLE 自动化日期

    我有一个日期字符串21 Apr 2018 如何将此日期字符串转换为 python 中的 OLE 自动化日期 我正在使用Python v3 6 OLE 日期的定义可以在此处找到 https msdn microsoft com en us l
  • JpaRepository 与枚举:findAllByOfferState_ACTIVE。没有这样的元素异常

    我想获得所有报价 其中 OfferState 等于 ACTIVE 是否可以仅使用方法名称使用 Spring Data 或者我必须使用 Query Repository public interface OfferRepository ext
  • MySQL - 如何规范化包含分隔符分隔 ID 的列

    我正在尝试规范化一个表 该表是以前的开发人员设计的 其中有一列包含管道分隔的 ID 这些 ID 链接到同一个表中的其他行 客户表 id aliases VARCHAR 1 4 58 76 2 3 4 1 58 76 58 1 4 76 76
  • 在集合中的项目数非常大的 WHERE 子句中使用“IN”

    我遇到一种情况 我需要对一组非常大的行进行更新 我只能通过它们的 ID 来识别这些行 因为目标记录是由用户选择的 除了用户的记录集之外没有任何共同点 想修改 所有这些记录上的相同属性都在更新 因此我想进行一次 UPDATE 调用 这是不好的
  • HOG 人体检测器:背景减除图像的误报检测

    我正在开展一个需要检测场景中的人员的项目 最初在原始帧上运行 HOG 检测器后 所有帧上的特定背景对象都被检测为人 从而产生 3021 个误报检测 因此 我采取了合理的步骤 通过对所有帧应用背景减法器 BackgroundSubtracto
  • Rascal:创建 AST 时 boolcollectBindings 的作用是什么?

    我有一个关于在 rascal 中创建 AST 的问题 我通常会执行以下操作 model createM3FromEclipseProject project testproject decls createAstsFromEclipsePr