将简单的 Antlr 语法转换为 Xtext

2024-01-28

我想将一个非常简单的Antlr语法转换为Xtext,所以没有句法谓词 https://stackoverflow.com/questions/5728659/translate-antlr-grammar-into-xtext-grammar-how-to-remove-syntactic-predicates, no Xtext 未提供 Antlr 的奇特功能 https://stackoverflow.com/questions/5904625/what-are-features-of-antlr-that-xtext-does-not-provide。考虑这个语法

grammar simple; // Antlr3

foo: number+;
number: NUMBER;
NUMBER: '0'..'9'+;

及其 Xtext 对应项

grammar Simple; // Xtext
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate Simple "http://www.example.org/Simple"

Foo: dummy=Number+;
Number: NUMBER_TOKEN;
terminal NUMBER_TOKEN: '0'..'9'+;

Xtext在幕后使用Antlr,但这两种格式并不完全相同。有很多烦人的(并且部分可以理解的)事情我必须修改,包括:

  • 终端前面加上前缀terminal keyword
  • Include import "http://www.eclipse.org/emf/2002/Ecore" as ecore使终端工作
  • 向顶级规则添加一个功能,例如foo: dummy=number+
  • 请记住,规则和终端名称必须是唯一的,即使不区分大小写。
  • 或者,将规则名称的首字母大写以遵循 Java 约定。

是否有一个工具可以自动进行这种转换,至少对于简单的情况?如果没有,是否有此类所需修改的更完整清单?


基本上不可能自动执行此转换,因为 Antlr 语法缺乏 Xtext 语法所需的信息。 Xtext 中的规则名称将用于从中创建类。 Xtext 中的一些作业将成为这些类中的 getter 和 setter。然而,这些分配不应该用于每个规则调用,因为 Xtext 中有特殊模式可以减少生成的 AST 中的噪声。诸如此类的事情使得自动进行这种转换几乎不可能。然而,通常可以直接将 Antlr 语法复制到 Xtext 编辑器中并手动修复问题。

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

将简单的 Antlr 语法转换为 Xtext 的相关文章

  • ANTLR4:空白处理

    我见过许多使用空格处理的 ANTLR 语法 如下所示 WS n t r gt skip or WS n t r gt channel HIDDEN 因此空格被丢弃并分别发送到隐藏通道 使用这样的语法 grammar Not start ex
  • 从 Antlr 语法生成语法正确的句子

    我有一个Xtext Antlr语法 https bitbucket org adamschmideg coffeescript eclipse 解析的子集咖啡脚本 http jashkenas github com coffee scrip
  • 我如何解释这个输入?

    我目前使用 ANTLR 在 Java 中实现了一种可用的 简单的语言 我想做的是将其嵌入纯文本中 与 PHP 类似 例如 Lorem ipsum dolor sit amet Phasellus volutpat dignissim sap
  • ANTLR 4 令牌规则匹配任何字符,直到遇到 XYZ

    我想要一个标记规则 它会吞噬所有字符 直到它到达字符XYZ 因此 如果输入是这样的 helloXYZ 那么令牌规则应该返回这个令牌 hello 如果输入是这样的 Blah Blah XYZ 那么令牌规则应该返回这个令牌 Blah Blah
  • ANTLR:从不同的语法调用规则

    是否可以从不同的语法调用规则 目的是在同一个文件中包含两种语言 第二种语言以 begin 开头 其中 是第二种语言 该语法应该调用另一个语法来解析该第二种语言 例如 grammar A start rule begin B program
  • ANTLR 4 树注入/重写运算符

    在 ANTLR 3 中您可以执行以下操作 andExpression andnotExpression gt andnotExpression AND a andnotExpression gt AndNode andExpression
  • 将简单的 Antlr 语法转换为 Xtext

    我想将一个非常简单的Antlr语法转换为Xtext 所以没有句法谓词 https stackoverflow com questions 5728659 translate antlr grammar into xtext grammar
  • antlr4:如何知道在给定上下文的情况下选择了哪个替代方案

    假设有一个关于 类型 的规则 它可以是预定义类型 由 IDENTIFIER 引用 或 typeDescriptor type IDENTIFIER typeDescriptor 在我的程序中 我有一个 typeContext ctx 的实例
  • 使用 ANTLR 解析循环

    我想使用 ANTLR 解析一个简单的类似 matlab 的 for 循环 循环就像 for i 1 8 y i a i i end 我想解析循环并解析8次y i a i i语句 以便对每个语句执行一些操作 我的规则如下 操作在 C 中描述
  • 在线验证antlr语法[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道是否存在某种用于antlr语法的在线测试环境 我可以在其中针对某些输入字符串验证和测试给定的语
  • 有谁知道在 ANTLRWorks 中调试树语法的方法

    ANTLR 使用的推荐模式是让解析器构造一个抽象语法树 然后构建树遍历器 又称树语法 来处理它们 我试图弄清楚为什么我的树语法不起作用 并且希望使用 ANTLRWorks 的调试器 就像我将其用于解析器本身一样 解析器的输入是 源代码 但树
  • 将 xtext 编辑器支持与外部 ANTLR 解析器链接起来

    我当前的项目 将其命名为 IoTSuite 采用高级规范 解析它们 并生成 Java 和 Android 代码 在这个项目中 我编写了 ANTLR 语法来解析高级规范 并使用 StringTemplate 作为代码生成器 然而 由于良好的编
  • 即使不匹配,ANTLR 词法分析器规则也会消耗字符吗?

    我有一个 antlr 词法分析器规则的奇怪副作用 并且我创建了一个 几乎 最小的工作示例来演示它 在这个例子中我想匹配字符串 0 1 例如 但是当我调试语法时 到达解析器的令牌流仅包含 1 第一个整数 无论 它包含多少位数字 总是会被消耗
  • ANTLR4:隐式或显式标记定义

    在 ANTLR4 中使用显式标记定义有哪些优点和缺点 我发现单括号中的文本比创建单独的标记并使用它代替文本更具描述性且更易于使用 E g grammar SimpleTest top library module library libra
  • Antlr 处理异常

    我使用 Antlr 3 和 AST 树开发了一个复杂的语法 ANTLR 生成词法分析器和解析器 问题是 例如 当用户输入无效的语法时 该语法需要 用户没有输入此内容 然后在我的 Eclipse IDE 中出现以下异常 line 1 24 m
  • 有没有使用 ANTLR 或类似语言实现的简单语言?

    我正在尝试构建一种简单的解释语言以用于学习目的 我读过无数关于 ANTLR 和 JavaCC 的理论和教程 但我不知道如何真正让它做一些有用的事情 我通过 把东西拆开然后重新组合起来 来学得最好 那么 是否有任何在 ANTLR 或类似工具的
  • 使用 ANTLR 验证 LL(1) 语法

    我知道 ANTLR 可以接受 LL 语法 但是 有什么方法可以使用 ANTLR 检查语法是否是 LL 1 吗 options k 1 如果你的语法不在 LL 1 中 它会发出警告
  • Antlr3 匹配没有空格的标记

    给定输入 term gt 1 数字 1 和比较运算符 gt 应该在 AST 中生成单独的节点 如何才能实现这一目标 在我的测试中 仅当 c 和 1 用空格分隔时才会发生匹配 如下所示 term lt 1 当前语法 startExpressi
  • ANTLR 和 Eclipse(或任何像样的 IDE)

    我已经使用 ANTLRv3IDE 插件在 Eclipse 中使用 ANTLR 一段时间了 虽然它并不完美 而且有点过时 但它的工作相当不错 现在 我希望将我正在创建的另一个 DSL 切换到 ANTLRv4 然而 Eclipse 的支持似乎非
  • 在 C# 中遍历 ANTLR AST 的教程?

    有人知道在 C 中遍历 ANTLR 生成的 AST 的教程吗 我能找到的最接近的是this https web archive org web 20201019210638 http www manuelabadia com blog Pe

随机推荐

  • 性能计数器类别名称? (C#)

    我正在尝试将性能计数器编程到我的 C 应用程序中 该应用程序启动另一个进程并检查该启动进程的处理器使用情况 据我了解 性能计数器类要求我分配类别名称 计数器名称和进程名称 我可以很容易地获得进程名称 但是互联网上是否有某种列表包含我可以分配
  • Xcode Playground 上的 SwiftUI 和 foreach 问题

    我试图在 SwiftUI 中执行一个简单的代码 但它显示错误 执行被中断 原因 信号 SIGABRT 这是一个代码 struct ContentView View let data 1 100 map Item 0 let columns
  • 如何在 Mac Excel 2011 上创建 Web 查询?

    我正在尝试从工作表上的网站导入数据 但是当我单击从新数据库查询导入数据时 它显示错误 未安装 Microsoft Query 我到处搜索但找不到解决方案 请帮帮我 Mac 上的过程有点不同 在 Finder 中 转到 Application
  • 带边框的材质设计按钮

    我知道如何制作带有颜色填充的材料设计按钮 style style Widget AppCompat Button Colored 还有无边框透明按钮 style style Widget AppCompat Button Borderles
  • Android Studio 中的 Javadoc @link 引用

    我正在尝试使用 Android Studio 生成一些 Javadoc 我指的是 link method 与链接在同一类中的方法 但我仍然得到reference not found来自 Javadoc 的错误 我可能遗漏了一些非常愚蠢的东西
  • MongoDB - 聚合 ObjectId 上的 $match

    我有一个如下所示的架构 var mongoose require mongoose module exports mongoose model Owner username String blocks type mongoose Schem
  • file_get_contents 处理错误的好方法[重复]

    这个问题在这里已经有答案了 我正在尝试错误处理 file get contents 方法 因此即使用户输入了错误的网站 它也会回显错误消息 而不是不专业的信息 警告 file get contents sidiowdiowjdiso 无法打
  • iPhone 应用程序中的文档文件编辑[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有人请建议我如何在 iPhone iPad 应用程序中编辑 Word 文档 我不会在我的应用程序中打开Word文档并更改字体样式和颜色并再
  • 关于应用层和数据库层之间的身份验证的意见

    我对一个技术困境感到困惑 我们团队中的两个人推荐了两种不同的安全模型 每种模型都有优点和缺点 绿地看起来像这样 我们有一个 ASP NET Web 应用程序 与业务层对话 与数据库对话 需求之一是能够让更高级别的用户将业务层权限委托给其他用
  • 从 jpeg 中删除文本

    我有一个包含 alpha 混合文本的 jpeg 知道字体和大小后 我推导出一个代表文本的 png 文件 使用 ImageMagick 我可以获得原始图片的近似值吗 实现此目的的一种方法是使用一种称为修复的技术 您可以在 Python Ski
  • 了解 iOS 崩溃 [SIGABRT ABORT]

    我刚刚收到来自 Crashlytics 的第一份崩溃报告 并正在尝试纠正该问题 不幸的是 它只包含一行在旧设备上运行的代码 因此我无法在 iPhone 6 上测试它 Crashlytics 的崩溃报告突出显示了两个线程 第一个内容如下 Fa
  • Singleton httpclient 与创建新的 httpclient 请求

    我正在尝试使用 HttpClient 在我的网络服务中创建层Xamarin Forms移动应用 没有单例模式 具有单例模式 in first方法我在每个新请求中创建新的http客户端对象 通过移动应用程序 这是我的代码 public Htt
  • macOS 11 Big Sur 中具有自定义视图的 NSMenuItem

    macOS 11 Big Sur 当前版本 beta 1 到 beta 6 有一个错误 功能 使得 NSMenuItem 难以使用自定义视图 具体来说 当菜单项突出显示时 项目的自定义视图不会调用draw dirtyRect 我通过 NSM
  • 读取并绑定多个 csv 文件

    我有一系列 csv 文件 每个文件一个 具有相同的列标题和不同的行数 最初我是这样读入并合并它们的 setwd lt N Ring data by cruise Shetland LengthHeight2013 lt read csv N
  • jsp中的“页面范围”是什么?

    有以下范围JSP 页面范围 请求范围 会话范围 适用范围 我对页面范围感到困惑 谁能告诉我这是什么页面范围 我在任何地方都没有找到它的明确定义 page范围意味着 它可以被认为是代表整个JSP页面的对象 即JSP 对象只能从创建它的同一页面
  • 在 Eclipse 中添加库 v7 AppCompat 时如何解决错误“未找到与给定名称匹配的资源”?

    我的项目目标是 API 级别 10 我想实现新的 ActionBar 支持库 按照中的所有说明进行操作后支持库设置 http developer android com tools support library setup html 当将
  • file.choose() 在 Windows 上打开没有文件名的对话框

    当我使用file choose or choose files选择文件时 对话窗口会显示文件夹图标 但不显示文本 以前没有出现过这个问题 我不久前更新了 RStudio 但我不确定这是否是原因 我目前使用 R 4 1 1 和 RStudio
  • CertPathValidatorException:找不到证书路径的信任锚 - Retrofit Android

    我正在创建一个 Android 应用程序 它使用https用于与服务器通信 我在用retrofit and OkHttp用于提出请求 这些对于标准来说效果很好http要求 以下是我遵循的步骤 Step 1 使用命令从服务器获取证书文件 ec
  • 计算彩色图像的 HSV 直方图与 H-S 直方图有何不同?

    我想计算图像的 HSV 直方图 我搜索了很多 但没有发现任何有用的东西 在opencv在线指南中我找到了H S直方图 V 对光照有什么影响 HSV 和 H S 是否相同 意味着 V 对光照没有影响 这是H S直方图的代码 cvtColor
  • 将简单的 Antlr 语法转换为 Xtext

    我想将一个非常简单的Antlr语法转换为Xtext 所以没有句法谓词 https stackoverflow com questions 5728659 translate antlr grammar into xtext grammar