有没有使用 ANTLR 或类似语言实现的简单语言?

发布于 2024-08-26 02:56:03 字数 238 浏览 9 评论 0原文

我正在尝试构建一种简单的解释语言以用于学习目的。我读过无数关于 ANTLR 和 JavaCC 的理论和教程,但我不知道如何真正让它做一些有用的事情。

我通过“把东西拆开然后重新组合起来”来学得最好,那么,是否有任何在 ANTLR 或类似工具的帮助下实现的简单语言的工作示例?

像下面这样的东西可能会很好:

x = 1

if x == 1  
     print "true"

I'm trying to build a simple interpreted language for learning purposes. I've read countless theory and tutorials on ANTLR and JavaCC, but I can't figure out how to actually make it do something useful.

I learn best by "taking something apart and putting it back together again", so, are there any working examples of simple languages implemented with the help of tools such as ANTLR, or similar?

Something like the following might be nice:

x = 1

if x == 1  
     print "true"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

世界和平 2024-09-02 02:56:04

注意:您可以使用另一种方法并查看 XText 来生成所有给你的代码。

来自 XText 文档:

与常见的解析器生成器(例如 JavaCC 或 ANTLR)相比,Xtext 从输入语法中派生出的不仅仅是解析器和词法分析器(lexer)。语法语言用于描述和生成:

  • 基于 ANTLR 3 的增量解析器和词法分析器,用于从文本中读取模型、
  • Ecore 模型(可选)、
  • 用于将模型写回文本的序列化器、
  • 链接器,用于在模型之间建立交叉链接模型元素、
  • EMF 资源接口的实现,完全支持加载和保存 EMF 模型,以及
  • 将该语言集成到 Eclipse IDE 中。

生成所有部件后,您可以根据需要分析它们(并测试它们)。

替代文本 http://www.eclipse.org/ Xtext/documentation/0_7_2/images/getting-started-editor.png

Note: you could use another approach and check out XText for generating all the code for you.

From the XText documentation:

In contrast to common parser generators (like e.g. JavaCC or ANTLR), Xtext derives much more than just a parser and lexical analyzer (lexer) from an input grammar. The grammar language is used to describe and generate:

  • an incremental, ANTLR 3 based parser and lexer to read your models from text,
  • Ecore models (optional),
  • a serializer to write your models back to text,
  • a linker, to establish cross links between model elements,
  • an implementation of the EMF Resource interface with full support for loading and saving EMF models, and
  • an integration of the language into your Eclipse IDE.

Once all the parts generated, you can analyze them (and test them) as you want.

alt text http://www.eclipse.org/Xtext/documentation/0_7_2/images/getting-started-editor.png

舞袖。长 2024-09-02 02:56:04

为什么不为与您的示例相匹配的非常简单的语言定义语法并尝试实现它?使用 ANTLR 创建解析树,然后弄清楚如何“评估”该树。首先,不必担心声明或数据类型(每个值都是整数)并支持 3 种语句类型:赋值、if 语句和 print。

Why don't you define a grammar for a really simple language which matches your example and try to implement it? Use ANTLR to create the parse tree, and then figure out how to "evaluate" the tree. To start with, don't bother with declarations or data types (every value is an integer) and support 3 statement types: assignment, if statement and print.

蓝颜夕 2024-09-02 02:56:03

[无耻插件] 为什么不买我的语言实现模式书呢?我拥有组合语言所需的所有组件,包括多个口译员等......

[shameless plug] Why not buy my Language Implementation Patterns book? I have all the pieces you need to put together a language including multiple interpreters etc...

好听的两个字的网名 2024-09-02 02:56:03

你可能可以在 Google Code 和 Github 上找到很多小语言。

这是几年前我在 ANTLR 中作为课堂项目完成的一种玩具语言:
http://code.google.com/p/bcis/

You can probably find lots of small languages on Google Code and Github.

Here's a toy language that I did in ANTLR as a class project a few years ago:
http://code.google.com/p/bcis/

毁虫ゝ 2024-09-02 02:56:03

Scott "JavaDude" Stanchfield 关于 ANTLR3 的视频教程系列非常不错。

当然,还有 StackOverflow,其中有大量 ANTLR 内容。例如:

ANTLR:有一个简单的示例吗?< /p>

Scott "JavaDude" Stanchfield's video tutorial series on ANTLR3 is pretty good.

And of course, there is StackOverflow, which has tons of ANTLR content. For example:

ANTLR: Is there a simple example?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文