问题标签 [antlr]

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 投票
3 回答
2261 浏览

domain-driven-design - Antlr 是 DSL 生成器还是有意编程的替代品?

Charles Simonyi 首先是在微软,然后是在他自己的公司,努力建立意向编程领域的雄心和创造力让我印象深刻。

究竟什么是意向编程

http://en.wikipedia.org/wiki/Intentional_programming

在这种软件方法中,程序员首先构建一个特定于给定问题域(例如人寿保险)的工具箱。领域专家在程序员的帮助下,然后以所见即所得 (WYSIWYG) 的方式描述程序的预期行为。自动化系统使用程序描述和工具箱来生成最终程序。后续更改仅在 WYSIWYG 级别进行。

它似乎是一种非常有用且实用的编程方法,可能会规避当前软件开发方法的许多问题。

从本质上讲,它似乎有助于非程序员(业务/系统分析师)创建特定领域的语言,但在一个比 UML 所能提供的更接近实际实现的阶段。他说它最终会完成,但它还没有(大约 15 年后)。

DSL 涵盖了从简单的 5 行规则引擎到 Ruby on Rails 等复杂应用程序的所有领域。所以我认为延迟发布他的产品与他正在处理简化更高级别的抽象这一事实有关,因为他必须基本上允许同时封装所有领域语言。

所以,我的问题是

(a) Antlr是否可以替代意向编程——尽管可能是一个不太用户友好的替代方案,需要程序员的干预而不是允许业务分析师生成 DSL? 您可以使用 Antlr 生成像 Ruby on Rails 这样的 DSL(假设它支持 Ruby 作为输出 - 我认为它不支持)?它不能做什么?另外,我不明白为什么它被称为“语言解析器”而不是“语言生成器”——因为后者描述了它的用途,而前者描述了它如何实现最终结果。

(b) 如果 Antlr 和 Intentional Programming 不同,有没有类似 Intentional Programming 的东西?

0 投票
4 回答
14000 浏览

java - 如何在 ANTLR 3 中处理字符串文字中的转义序列?

我一直在查看 ANTLR v3 文档(以及我可信赖的“The Definitive ANTLR reference”副本),但我似乎找不到在字符串文字中实现转义序列的干净方法(我目前正在使用 Java目标)。我曾希望能够做类似的事情:

例如,我希望输入标记“ 'Foo\'s House'”成为字符串“ Foo's House”。

不幸的是,片段setText(...)中的调用ESCAPE_SEQUENCE设置了整个STRING令牌的文本,这显然不是我想要的。

有没有一种方法可以在不添加返回结果字符串并手动替换转义序列的方法的情况下实现此语法(例如,使用类似规则setText(escapeString(getText()))中的内容STRING)?

0 投票
3 回答
3171 浏览

parsing - ANTLR 是序列化/反序列化二进制数据格式的合适工具吗?

我需要读取和写入八位字节流以通过各种网络发送以与智能电表通信。有一个 ANSI 标准 ANSI C12.19 描述了二进制数据格式。虽然数据格式并不太复杂,但该标准非常庞大(500 多页),因为它描述了许多不同的类型。该标准完全由 EBNF 语法描述。我正在考虑使用 ANTLR 来读取 EBNF 语法或其修改版本,并创建可以读取和写入八位字节流的 C# 类。

这是对ANTLR的好用吗?

如果是这样,我需要做什么才能使用 ANTLR 3.1?通过搜索新闻组档案,我似乎需要实现一个可以读取字节而不是字符的新流。这就是全部还是我还必须实现 Lexer 衍生产品?

如果 ANTLR 可以帮助我读取/解析流,它也可以帮助我编写流吗?

谢谢。

丹芬卡内

0 投票
9 回答
6708 浏览

java - 哪个面向 Java 的词法分析器用于简单项目(ANTLR、DIY 等)

我正在开发一个小型文本编辑器项目,并希望为几种语言(Java、XML ..仅举几例)添加基本的语法突出显示。作为学习经验,我想添加一个流行或不流行的 Java 词法分析器。

你推荐什么项目。Antlr 可能是最知名的,但它看起来相当复杂和沉重。

这是我知道的选项。

  1. 蚂蚁
  2. Ragel(是的,它可以生成用于处理输入的 Java 源代码)
  3. 自己做(我想我可以编写一个简单的令牌解析器并突出显示源代码)。
0 投票
1 回答
1218 浏览

antlr - ANTLR2 与 ANTLR3

你用过这两种还是两种?你更喜欢哪个,出于什么原因?

例如,我最近学习了 v2,并且可能会因为 netbeans 团队提供的高性能实现而坚持使用它(是的,我坚持使用 java)。在这种情况下,是否有任何令人信服的理由转换?

0 投票
4 回答
2366 浏览

c - ANTLR生成的语法文件如何使用?

我认为这是一个愚蠢的问题,但我刚刚开始使用 ANTLR。我将他们教程中的“SimpleCalc”语法放在一起,并以 C 作为目标语言生成它。我得到了 SimpleCalcParser.c/.h 和 SimpleCalcLexer.c/.h 作为输出,我能够编译它们并成功构建。但是现在,我如何实际使用生成的代码?我无法在文档中找到任何有用的内容。

下面是我的 main() 函数。这也来自教程。

编辑:根据第一个响应,我应该说我这样运行程序:“./testantlr test.txt”,其中 test.txt 包含“4+1”。没有输出。

例如,从这里,我将如何访问生成的语法树中的“4”,或者打印出整个语法树?基本上,我如何访问 ANTLR 生成的语法树中的内容?

0 投票
2 回答
340 浏览

java - ANTLR 可以生成最终的解析器类吗?

我正在使用 ANTLR 3.1 和 ANTLRWorks 在 Java 中生成解析器类。如果我用 Java final 关键字标记生成的类,解析器的性能会更好。问题是:每次从 ANTLR 语法重新生成代码后,我都会手动添加此关键字。无论如何,在语法中,告诉 ANTLR 将 final 关键字添加到生成的解析器类定义中吗?

0 投票
3 回答
1468 浏览

java - 在 Java 中为我自己的语言语法生成解析器的最佳工具是什么?

我正在开发一种主要基于 C99 标准的小型编程语言,并且我已经用 java 编写了一个相当不错的词法分析器,现在我正在寻找从语法生成一个 Java Parser。我知道有Bison,但这似乎只生成 C 代码。我正在寻找一个应用程序,它允许我输入我的语法并在 java 代码中创建一个完整的解析器类。阅读有关相关主题的其他 SO 帖子,我找到了 ANTLR,但我想知道 SO 中是否有人知道更好的工具?

谢谢!

0 投票
7 回答
9203 浏览

parsing - 词法分析器/解析器工具

哪个词法分析器/解析器生成器对于 C 或 C++ 来说是最好的(最容易使用、最快的)?我现在正在使用 flex 和 bison,但 bison 只处理 LALR(1) 语法。我正在解析的语言实际上并不需要无限前瞻,但无限前瞻会使解析变得容易得多。我应该尝试 Antlr 吗?可可/R?猎鹿犬?还有什么?

0 投票
3 回答
6915 浏览

parsing - ANTLR 中的树解析器是什么,我是否被迫编写一个?

我正在为 ANTLR 中的一小部分 C 语言编写一个词法分析器/解析器,它将在 Java 环境中运行。我是语言语法领域的新手,在许多 ANTLR 教程中,他们创建了一个 AST - 抽象语法树,我是否被迫创建一个,为什么?