| Blog信息 |
|
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7700891 建立时间:2006年5月29日 |

| |
|
[Java Open Source]理解 ANTLR 语法文件 软件技术, 电脑与网络
lhwork 发表于 2006/6/30 16:08:43 |
|
理解 ANTLR 语法文件
译者:Nicholas @ NirvanaStudio
原文出处:http://www.placidsystems.com/articles/article-grammarlayout/grammarLayout.htm
你是否被Antlr语法文件的不同部分搞的晕头转向呢,你是否很想知道这些部分的含义呢?我们在这里将从另一个方面来了解它们,这里我们使用Antlr Studio来演示。
不管你信不信,Antlr语法文件在某种程度上和Java源代码很类似。什么,你看不出任何与Java代码相似的地方?好,就让我给你展示......
语法(Grammar)
500)this.width=500'>
500)this.width=500'>
有放在header部分的内容将会出现在Antlr生成的Java代码的头部。站在Java文件的层次上思考,你通常在这个部分里面放置包定义。你还可以把一部分import的内容放在这里。
500)this.width=500'>这个部分的代码对于文件中的每个语法来说是唯一的。这个部分会被放在类声明之前。以上的例子将只对CalcParser引入ArrayList和MyClass这两个类。
500)this.width=500'>然后我们开始定义语法,这看起来像是在声明一个类。
500)this.width=500'>在这个options部分,你可以制定语法生成的一些参数。在Antlr Studio中你可以使用Ctrl+Space看看哪些选项可用。
500)this.width=500'>Token部分用来制定“假想的”记号,那些通常没有声明在lexer中。这些是在TreeParsers中使用的“假想的”记号。
500)this.width=500'>另一个行为部分。这个部分的内容被放在类内部。你可以为你的解析器定义一些自定义方法。
规则(RULES)
500)this.width=500'>
Antlr语法文件中的规则定义对应生成的Java代码中的一个方法定义。
500)this.width=500'>500)this.width=500'>500)this.width=500'>500)this.width=500'>正如你所看到的,这里我们可以在规则中做任何事,这些可以通过一个函数完成。我们可以为规则指定参数,上面的例子显示了这一点,甚至可以指定返回值和异常。
500)this.width=500'>这个options部分允许你指定一些可选参数。
500)this.width=500'>我们可以指定自定义异常处理机。
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. |
|
|