2010-03-20 28 views
6

我正在尝试为学习目的构建一个简单的解释语言。我读过无数有关ANTLR和JavaCC的理论和教程,但我无法弄清楚如何真正使它做一些有用的事情。是否有使用ANTLR或类似方法实现的简单语言?

我通过“分开一些东西并将其重新组合在一起”学习得最好,那么,是否有借助ANTLR或类似工具实现的简单语言的任何工作示例?

类似下面的可能是好的:

x = 1 

if x == 1 
    print "true" 

回答

13

[无耻插件]为什么不买我的书Language Implementation Patterns?我有你需要把所有的东西放在一起,包括多种口译等语言......

+2

虽然*语言实现模式*非常简要地提到ANTLR的工作原理。所以,你真的应该先推荐'etheros'来购买你的* ANTLR参考书,然后才能得到*语言实现模式。 :) – 2010-03-21 09:00:53

+0

我查看了该链接中“Q”语言的代码,这正是我所期待的!感谢您的链接,我期待着购买这本书。 – etheros 2010-03-22 17:49:05

2

注意:你可以使用另一种方法,并检查了XText生成的所有代码为您服务。

从XTEXT文档:

相反共同解析器生成器(例如像的JavaCC或ANTLR)的Xtext导出不仅仅是一个解析器和从输入语法词法分析器(词法分析程序)等等。语法的语言来描述,并产生:

  • 增量,基于ANTLR 3解析器和词法分析器从文本阅读你的模型,
  • 的Ecore模型(可选),
  • 串行写你的模型回文本,
  • 的连接体,建立模型元素之间的交联,
  • 与装载和全力支持节能EMF模型EMF资源接口的实现,并
  • 将语言集成到Eclipse IDE中。

一旦生成了所有部件,就可以随意分析它们(并测试它们)。

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

0

你为什么不定义一个文法一个非常简单的语言,它符合您的例子,并且尽可能实现它?使用ANTLR创建分析树,然后找出如何“评估”树。首先,不要打扰声明或数据类型(每个值都是整数)并支持3种语句类型:赋值,if语句和print

4

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

下面是我在做ANTLR作为一类项目,几年前,一家玩具语言: http://code.google.com/p/bcis/

+0

我没有测试它,而是通过你的谷歌网页浏览:看起来不错,并且有据可查的! – 2010-03-21 09:04:56

+0

我只是想补充一点,尽管我使用的是ANTLRv3,但您的语言却是非常宝贵的学习助手。 – etheros 2010-04-07 19:08:10

相关问题