我正在尝试为学习目的构建一个简单的解释语言。我已经阅读了关于ANTLR和JavaCC的无数理论和教程,但我无法弄清楚如何让它做一些有用的事情。
我通过“将某些东西分开并重新组合在一起”来学习最好的东西,那么,有没有使用ANTLR等工具实现简单语言的工作示例?
以下内容可能不错:
x = 1
if x == 1
print "true"
答案 0 :(得分:13)
[无耻插件]为什么不买我的Language Implementation Patterns书呢?我有你需要的所有部分,包括多种口译员等语言......
答案 1 :(得分:4)
您可以在Google Code和Github上找到许多小语言。
这是几年前我在ANTLR中作为课堂项目所做的玩具语言: http://code.google.com/p/bcis/
答案 2 :(得分:3)
Scott "JavaDude" Stanchfield's video tutorial series on ANTLR3非常好。
当然,还有StackOverflow,它有大量的ANTLR内容。例如:
答案 3 :(得分:2)
注意:您可以使用其他方法并查看 XText ,为您生成所有代码。
来自XText文档:
与常见的解析器生成器(例如JavaCC或ANTLR)相比,Xtext从输入语法中获得的不仅仅是解析器和词法分析器(词法分析器)。语法语言用于描述和生成:
生成所有部件后,您可以根据需要分析它们(并测试它们)。
alt text http://www.eclipse.org/Xtext/documentation/0_7_2/images/getting-started-editor.png
答案 4 :(得分:0)
为什么不为与您的示例匹配并尝试实现它的非常简单的语言定义语法?使用ANTLR创建解析树,然后找出如何“评估”树。首先,不要打扰声明或数据类型(每个值都是整数)并支持3种语句类型:赋值,if语句和print
。