问题标签 [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.
rascal - 如何将具体的语法值转换为其他类型的值?
给定一些具体的语法值,我如何将它映射到不同类型的值(在本例中为 an int
)?
不幸的是,这不起作用:
还是implode
进入我指定类型的 ADT 的唯一方法?
java - OCL:从 AST 到具体语法
Evrything 在标题中:我有一个已修改的 OCL AST(以 root 身份使用 org.eclipse.ocl.ecore.Constraint)。我想再次解析它,但我只找到打印约束(或任何 OCL 事物)时得到的“单行 OCL 语法”——在他们的 toString() 方法中提供。
有人知道从 EMF OCL 约束中获取最终可解析 OCL 字符串的方法吗?(或来自任何 TypedElement)(或来自任何 OCLExpression 或 ExpressionInOCL)??
谢谢 !爱德华
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 节点的父节点。
compiler-construction - 使用从 CST 生成的 AST 时如何漂亮地打印源代码
我知道使用 CST 打印代码相当简单,因为有关语法的信息存储在节点中。
但是,当转换为 AST 时,源代码的大部分初始结构都会因脱糖和其他转换而丢失。因此,考虑到它已经经历了这些主要的翻译,AST 怎么能漂亮地打印源代码呢?它是否包含对用于生成它的 AST 的引用(以及完美再现源代码所需的语法/结构)?
python - libcst:插入新节点会添加内联代码和分号
我正在尝试在分配节点之前引入一个新节点(作为新的代码行)。
使用FlattenSentinel
引入新节点时会出现问题,因为我希望节点是分开的,但 libcst 使用分号 ( ;
) 将它们连接起来,例如:
变成:
重现示例的代码:
我也尝试引入一个新行,但看起来更糟,代码示例:
我想要的结果是将新节点插入现有节点上方(在同一级别),不带分号,如下所示:
这在 libcst 中可能吗?
path - Tree-Sitter.py 所有叶子到叶子的路径
我正在尝试从使用 tree-sitter 创建的语法树中提取所有叶子到叶子的路径,以在 code2vec 中使用,但我无法弄清楚如何识别叶子以及如何设计算法。
parsing - 如何使用语言具体语法树获得抽象语法树?
如何使用具体语法树解析文件并生成抽象语法树?
我在这篇关于ungrammar的博客文章中遇到了具体的语法树。但是我不知道如何构建解析器。