代码之家  ›  专栏  ›  技术社区  ›  etheros

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

  •  6
  • etheros  · 技术社区  · 15 年前

    我正试图建立一个简单的解释语言学习的目的。我已经阅读了无数关于antlr和javacc的理论和教程,但是我不知道如何让它做一些有用的事情。

    我学到的最好的方法是“把一些东西拆开,再重新组合起来”,那么,有没有简单语言的工作示例是在antlr或类似工具的帮助下实现的?

    像这样的事情可能很好:

    x = 1
    
    if x == 1  
         print "true"
    
    5 回复  |  直到 13 年前
        1
  •  13
  •   Matt Fenwick sagarcool89    13 年前

    [无耻的插头]为什么不买我的 Language Implementation Patterns 书?我有你所需要的所有材料,包括多个口译员等。

        2
  •  4
  •   Stuart Sierra    15 年前

    你可能在google代码和github上找到很多小的语言。

    这是几年前我在Antlr作为一个班级项目时做的一个玩具语言: http://code.google.com/p/bcis/

        3
  •  3
  •   Jörg W Mittag    15 年前

    Scott "JavaDude" Stanchfield's video tutorial series on ANTLR3 很不错。

    当然,还有stackoverflow,它有大量的antlr内容。例如:

    ANTLR: Is there a simple example?

        4
  •  2
  •   VonC    15 年前

    注意:您可以使用另一种方法并签出 XText 为你生成所有的代码。

    从xtext文档:

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

    • 一个基于antlr 3的增量式解析器和lexer,用于从文本中读取模型,
    • Ecore型号(可选)
    • 将模型写回文本的序列化程序,
    • 链接器,用于在模型元素之间建立交叉链接,
    • emf资源接口的实现,完全支持加载和保存emf模型,以及
    • 将该语言集成到eclipse ide中。

    生成所有零件后,可以根据需要对其进行分析(和测试)。

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

        5
  •  0
  •   Stephen C    15 年前

    为什么不为一个真正简单的语言定义一个语法来匹配您的示例并尝试实现它呢?使用antlr创建解析树,然后找出如何“计算”树。首先,不要为声明或数据类型(每个值都是整数)而烦恼,并支持3种语句类型:赋值、if语句和 print .