问题标签 [concrete-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.

0 投票
1 回答
139 浏览

rascal - 如何将具体的语法值转换为其他类型的值?

给定一些具体的语法值,我如何将它映射到不同类型的值(在本例中为 an int)?

不幸的是,这不起作用:

还是implode进入我指定类型的 ADT 的唯一方法?

0 投票
1 回答
85 浏览

rascal - 如何构造一个“X?”具体的语法值?

0 投票
1 回答
112 浏览

java - OCL:从 AST 到具体语法

Evrything 在标题中:我有一个已修改的 OCL AST(以 root 身份使用 org.eclipse.ocl.ecore.Constraint)。我想再次解析它,但我只找到打印约束(或任何 OCL 事物)时得到的“单行 OCL 语法”——在他们的 toString() 方法中提供。

有人知道从 EMF OCL 约束中获取最终可解析 OCL 字符串的方法吗?(或来自任何 TypedElement)(或来自任何 OCLExpression 或 ExpressionInOCL)??

谢谢 !爱德华

0 投票
0 回答
176 浏览

abstract-syntax-tree - 如何在 Pharo SmaCC 中将自定义节点添加到 AST?

我正在使用 Pharo 在 SmaCC 中为 Java 语言的通用自定义节点创建 CST。我找到了语法(解析器和扫描器),并用几个例子对其进行了测试,创建抽象语法树完美​​。

但是,我需要使用自定义通用节点创建具体语法树,例如在每个时间节点上,对于我需要添加父节点 LOOP_STATEMENT 的节点。我找不到怎么做?可能吗?

我阅读了有关 SmaCC 和 Pharo 的所有信息,但在这里找不到示例或解决方案http://books.pharo.org/booklet-Smacc/html/Chapters/Smacc/SmaccAST.html

例如,我尝试在示例计算器代码上添加自定义 CST 节点。

这是 AST 语法

例如,我需要添加节点 SEPARATOR 作为每个括号的父节点。通过知道如何做到这一点,这将解决我的 Java 语法问题并将 LOOP_STATEMENT 添加为 while 节点的父节点。

0 投票
0 回答
56 浏览

compiler-construction - 使用从 CST 生成的 AST 时如何漂亮地打印源代码

我知道使用 CST 打印代码相当简单,因为有关语法的信息存储在节点中。

但是,当转换为 AST 时,源代码的大部分初始结构都会因脱糖和其他转换而丢失。因此,考虑到它已经经历了这些主要的翻译,AST 怎么能漂亮地打印源代码呢?它是否包含对用于生成它的 AST 的引用(以及完美再现源代码所需的语法/结构)?

0 投票
1 回答
130 浏览

python - libcs​​t:插入新节点会添加内联代码和分号

我正在尝试在分配节点之前引入一个新节点(作为新的代码行)。

使用FlattenSentinel引入新节点时会出现问题,因为我希望节点是分开的,但 libcs​​t 使用分号 ( ;) 将它们连接起来,例如:

变成:

重现示例的代码:

我也尝试引入一个新行,但看起来更糟,代码示例:

我想要的结果是将新节点插入现有节点上方(在同一级别),不带分号,如下所示:

这在 libcs​​t 中可能吗?

0 投票
0 回答
17 浏览

path - Tree-Sitter.py 所有叶子到叶子的路径

我正在尝试从使用 tree-sitter 创建的语法树中提取所有叶子到叶子的路径,以在 code2vec 中使用,但我无法弄清楚如何识别叶子以及如何设计算法。

0 投票
1 回答
189 浏览

parsing - 如何使用语言具体语法树获得抽象语法树?

如何使用具体语法树解析文件并生成抽象语法树?

我在这篇关于ungrammar的博客文章中遇到了具体的语法树。但是我不知道如何构建解析器。

0 投票
2 回答
44 浏览

python - 仅使用内置库的 Python 保留注释解析?

我编写了一个库,使用 justastinspect库来解析和发出 [在 Python < 3.9 上使用astor ] 内部 Python 构造。

刚刚意识到我真的需要保留评论。最好不要求助于RedBaronLibCST;因为我只需要发出未更改的评论;是否有一种简洁的方式来保留注释解析/发出 Python 源代码,仅使用 stdlib