ANTLR教程

版本:v1.0

Crifan Li

摘要

本文主要介绍了ANTLR方面的内容,包括ANTLR是什么,如何进行ANTLR的开发,总结了ANTLR的语法知识,整理了ANTLR的相关的开发工具,总结了ANTLR常见问题及解决办法,然后总结了ANTLR的一些内容等等

[提示] 本文提供多种格式供:
在线阅读 HTML HTMLs PDF CHM TXT RTF WEBHELP
下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF WEBHELP

HTML版本的在线地址为:

http://www.crifan.com/files/doc/docbook/antlr_tutorial/release/html/antlr_tutorial.html

有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:

http://www.crifan.com/bbs/categories/antlr_tutorial/

2013-12-15

修订历史
修订 1.0 2013-12-15 crl
  1. 把之前教程的地址整理过来

目录

前言
1. 本文目的
2. 学习ANTLR之前
1. ANTLR简介
1.1. ANTLR是什么
1.2. ANTLR版本历史
1.3. ANTLR的应用领域
1.4. ANTLR技术的优势
1.5. 和ANTLR相关的一些概念
2. ANTLR的开发流程
2.1. ANTLR的开发流程
2.2. ANTLR v4的开发流程
2.3. 把ANTLR整合到自己的程序中
3. ANTLR的语法Grammar详解
3.1. 完整的ANTLR语法的解释
3.2. 详解部分ANTLR语法
3.2.1. ANTLR中的lexer和parser的header的含义
3.2.2. antlr v2和antlr v3的语法对比
3.2.3. ANTLR中的fragment
4. ANTLR的开发工具
4.1. ANTLR开发环境之命令行
4.2. ANTLR开发环境之ANTLRWorks
4.2.1. ANTLRWorks v1:可运行的单独的jar包
4.2.2. ANTLRWorks v2:基于Netbeans的IDE
4.3. ANTLR开发环境之Eclipse+ANTLR的插件
5. ANLTR常见问题及解答
5.1. ANTLR的语法方面常见问题及解决办法
5.1.1. The following token definitions can never be matched because prior tokens match the same input
5.1.2. Decision can match input such as xxx using multiple alternatives
5.1.3. MismatchedSetException和mismatched input xxx expecting set yyy
5.1.4. syntax error: unterminated rule detected at xxx while looking for lexer rule element
5.1.5. NoViableAltException和no viable alternative at input xxx
5.1.6. Cannot generate the grammar because, duplicate token type xxx when collapsing subrule into set
5.1.7. rewrite syntax or operator with no output option xxx
5.1.8. UnwantedTokenException(found=xxx)
5.1.9. org.antlr.runtime.EarlyExitException
5.1.10. reference to rewrite element include without reference on left of ->
5.2. ANTLRWorks方面常见问题及解决办法
5.2.1. Compiler exception: java.io.IOException Cannot run program javac
5.2.2. Cannot launch the debuggerTab. Time-out waiting to connect to the remote parser
5.2.3. xxxParser.java error: <xxx> expected
5.2.4. Compiler failed with result code 1
6. ANTLR开发经验总结
6.1. ANTLRWorks使用心得
6.1.1. ANTLRWorks有时候会挂掉
6.2. ANTLR的预处理Preprocess
6.2.1. ANTLR自身是不支持预处理功能的
6.2.2. 可以使用ANTLR去实现预处理的功能
6.3. ANTLR的异常处理
6.3.1. ANTLR出错异常时就退出(不继续恢复错误和继续运行)
6.3.2. ANTLR出错异常时显示更多详细信息
6.4. ANTLR的递归
6.5. ANTLR解析性能
6.6. ANTLR中的条件性匹配
6.7. ANTLR相关资源下载
6.7.1. ANTLR语法示例参考代码
6.7.2. ANTLR相关开发工具下载
6.7.3. ANTLR相关资料和文档下载
6.8. ANTLR中debug和非debug版本
6.8.1. ANTLR生成的AST中没有节点的父子关系
参考书目