Nirvana Studio » Blog Archive » 理解 ANTLR 语法文件 :: 分享知识,传播技术

理解 ANTLR 语法文件

Posted by Nicholas Ding on 四月 26th, 2006

理解 ANTLR 语法文件

译者:Nicholas @ NirvanaStudio

原文出处:http://www.placidsystems.com/articles/article-grammarlayout/grammarLayout.htm

你是否被Antlr语法文件的不同部分搞的晕头转向呢,你是否很想知道这些部分的含义呢?我们在这里将从另一个方面来了解它们,这里我们使用Antlr Studio来演示。

不管你信不信,Antlr语法文件在某种程度上和Java源代码很类似。什么,你看不出任何与Java代码相似的地方?好,就让我给你展示……

语法(Grammar)

1

有放在header部分的内容将会出现在Antlr生成的Java代码的头部。站在Java文件的层次上思考,你通常在这个部分里面放置包定义。你还可以把一部分import的内容放在这里。

2这个部分的代码对于文件中的每个语法来说是唯一的。这个部分会被放在类声明之前。以上的例子将只对CalcParser引入ArrayList和MyClass这两个类。

3 width="20" />然后我们开始定义语法,这看起来像是在声明一个类。

4 width="20" />在这个options部分,你可以制定语法生成的一些参数。在Antlr Studio中你可以使用Ctrl+Space看看哪些选项可用。

5 width="20" />Token部分用来制定“假想的”记号,那些通常没有声明在lexer中。这些是在TreeParsers中使用的“假想的”记号。

6 width="20" />另一个行为部分。这个部分的内容被放在类内部。你可以为你的解析器定义一些自定义方法。

规则(RULES)

7 width="746" />

Antlr语法文件中的规则定义对应生成的Java代码中的一个方法定义。

1 width="20" />2 width="20" />3 width="20" />4 width="20" />正如你所看到的,这里我们可以在规则中做任何事,这些可以通过一个函数完成。我们可以为规则指定参数,上面的例子显示了这一点,甚至可以指定返回值和异常。

5 width="20" />这个options部分允许你指定一些可选参数。

7 width="20" />我们可以指定自定义异常处理机。

Java and all Java-based trademarks and logos are
trademarks or registered trademarks of Sun Microsystems, Inc. in the United
States, other countries, or both.

One Response to “理解 ANTLR 语法文件”

  1. darknight Says:

    兄弟,有AntlrStudio的破解License吗?那个免费的有时间限制啊

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>