我正在尝试为学习目的构建一个简单的解释语言。我读过无数有关ANTLR和JavaCC的理论和教程,但我无法弄清楚如何真正使它做一些有用的事情。是否有使用ANTLR或类似方法实现的简单语言?
我通过“分开一些东西并将其重新组合在一起”学习得最好,那么,是否有借助ANTLR或类似工具实现的简单语言的任何工作示例?
类似下面的可能是好的:
x = 1
if x == 1
print "true"
我正在尝试为学习目的构建一个简单的解释语言。我读过无数有关ANTLR和JavaCC的理论和教程,但我无法弄清楚如何真正使它做一些有用的事情。是否有使用ANTLR或类似方法实现的简单语言?
我通过“分开一些东西并将其重新组合在一起”学习得最好,那么,是否有借助ANTLR或类似工具实现的简单语言的任何工作示例?
类似下面的可能是好的:
x = 1
if x == 1
print "true"
[无耻插件]为什么不买我的书Language Implementation Patterns?我有你需要把所有的东西放在一起,包括多种口译等语言......
注意:你可以使用另一种方法,并检查了XText生成的所有代码为您服务。
从XTEXT文档:
相反共同解析器生成器(例如像的JavaCC或ANTLR)的Xtext导出不仅仅是一个解析器和从输入语法词法分析器(词法分析程序)等等。语法的语言来描述,并产生:
一旦生成了所有部件,就可以随意分析它们(并测试它们)。
alt text http://www.eclipse.org/Xtext/documentation/0_7_2/images/getting-started-editor.png
你为什么不定义一个文法一个非常简单的语言,它符合您的例子,并且尽可能实现它?使用ANTLR创建分析树,然后找出如何“评估”树。首先,不要打扰声明或数据类型(每个值都是整数)并支持3种语句类型:赋值,if语句和print
。
您可能在Google Code和Github上找到很多小语言。
下面是我在做ANTLR作为一类项目,几年前,一家玩具语言: http://code.google.com/p/bcis/
我没有测试它,而是通过你的谷歌网页浏览:看起来不错,并且有据可查的! – 2010-03-21 09:04:56
我只是想补充一点,尽管我使用的是ANTLRv3,但您的语言却是非常宝贵的学习助手。 – etheros 2010-04-07 19:08:10
Scott "JavaDude" Stanchfield's video tutorial series on ANTLR3是相当不错的。
当然,还有StackOverflow,其中有吨的ANTLR内容。例如:
虽然*语言实现模式*非常简要地提到ANTLR的工作原理。所以,你真的应该先推荐'etheros'来购买你的* ANTLR参考书,然后才能得到*语言实现模式。 :) – 2010-03-21 09:00:53
我查看了该链接中“Q”语言的代码,这正是我所期待的!感谢您的链接,我期待着购买这本书。 – etheros 2010-03-22 17:49:05