前言
学习框架或第三方库的方法是什么
(1)少量的浏览manual或tutoral,只关注程序所需的特征,再完善其详细内容和特征的认识?
(2)花大量的时间研究详细内容,再考虑程序实现?
这是个先有鸡还是先有蛋的问题,因这是私底下的项目,我倾向于后者。
 
当前已对ANTLR文法有了一些了解,这篇是概览性知识的最后一部分。
初步将ANTLR的涉及的面向应用的内容划分了一下:
[1]文法:lexer, parser, tree parser
[2]动作和属性
[3]内部表示:AST
[4]模板语言StringTemplate
[5]错误报告和恢复
[7]谓词:句法谓词和语义谓词
 
内容
antlrworks常见用法
ANTLR文法级选项
1 language option
2 output option
3 backtrack option
4 memoize option
5 tokenVocab option
6 rewrite option
7 superClass option
8 filter option
9 ASTLabelType option
10 TokenLabelType option
 
antlrworks常见用法
很好的参考URL

1 【记录】尝试使用ANTLRWorks 1.5开发

http://www.crifan.com/try_antlrworks_1_5_development/

2 【已解决】ANTLRWorks 1.5编译代码出错:Compiler failed with result code 1

http://www.crifan.com/antlrworks_1_5_compiler_failed_with_result_code_1/
 
选用了antlrworks-1.4.3.jar(URL 2中提供了下载地址)。
 
打开编辑环境(Java(TM) Platform SE binary)

创建文法或模板

编辑器概览

测试文法(Run->Debug,或ctrl+D),编辑输入

直接识别(Go To End)

观察解析树

计划:记录测试过程中出现的错误。
---------------------------------------------------------------------------------------------------------------------------------------
 
ANTLR文法级选项
1 language option
language指定ANTLR生成的目标语言。
ANTLR在CLASSPATH下搜索路径org/antlr/codegen/templates/,下有各语言对应的模板。
 
2 output option
output仅对混合文法有效,生成输出模板(值为template),生成树(值为AST)。
 
3 backtrack option
backtrack设置为true时,表示ANTLR在静态LL(*)文法分析无法产生确定的决定时应该回溯。
默认为false。
 
4 memoize option
记录部分解析结果,以保证回溯时解析器不会对同一输入用同一规则解析超过一次。
默认为false。
 
5 tokenVocab option
指定ANTLR应该获得预定义的token和token类型。
常在一个文法需要另一个文法的token类型时使用,典型的例子是树文法使用解析文法产生其书生成的token和token类型。
默认不使用。
 
6 rewrite option
与output=template一起使用,在输入源本地修改。
 
7 superClass option
指定生成的识别器的超类。
根据不同的文法,默认为Lexer, Parse, TreeParse。
 
8 filter option
仅用于lexer。
按lexer规则顺序寻找匹配,消费输入中字符直至找到匹配的规则。
默认值为false。
 
9 ASTLabelType option
设置tree标签和值为tree的表达式(tree-valued expression)在目标语言中的类型。
Java中默认值为Object。
 
10 TokenLabelType option
设置token标签和值为token的表达式在目标语言中的类型。
Java中默认值为Token。
 
5.11 k option
向前看token数量。
默认值为*。

ANTLR3完全参考指南读书笔记[04]的更多相关文章

  1. ANTLR3完全参考指南读书笔记[01]

    引用 Terence Parr. The Definitive ANTLR Reference, Building Domain Specific Languages(antlr3 version). ...

  2. ANTLR3完全参考指南读书笔记[06]

    前言 这段时间在公司忙的跟狗似的,但忙的是没多少技术含量的活儿. 终于将AST IR和tree grammar过了一遍,计划明天写完这部分的读书笔记.   内容 1 内部表示AST构建 2 树文法   ...

  3. ANTLR3完全参考指南读书笔记[02]

    前言 程序语言是什么? 用wiki上的描述,程序语言是一种人工设计的语言,用于通过指令与机器交互:程序语言是编程程序的标记,而程序是一种计算或算法的描述.详细介绍和背景信息参考: Programmin ...

  4. ANTLR3完全参考指南读书笔记[08]

    前言 不要让用户被那些“专业术语”吓住! 用心设计的提示和反馈信息是软件设计者的“职业良心”.   内容 1 存在哪些错误? 2 美化错误提示 3 错误恢复策略   1 存在哪些错误? 在DSL语言开 ...

  5. ANTLR3完全参考指南读书笔记[07]

    前言 真正意义上的程序员都很懒,懒的连多余的一行代码也不写. 如果能将底层满手油污的活儿都可以交给别人去做,自己就扮演个智囊团成员的角色,生活会比想象中的还要惬意. 严格的按照指令执行长时间不知疲倦的 ...

  6. ANTLR3完全参考指南读书笔记[05]

    前言 仅生成给出true/false的识别器是没有多大用处的,自然的就有在识别过程中遇到某一结构时执行一段代码.存储该结构中信息的想法. ANTLR提供了在文法中嵌入属性和动作超级混合“文法”,可以生 ...

  7. ANTLR3完全参考指南读书笔记[03]

    前言 文中第4章内容有点多,有点枯燥,但不坚持一下,之前所做的工作就白做了. 再次确认一下总体目标: protege4编辑器中Class Definition中语法解析和错误提示: Java虚拟机规范 ...

  8. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  9. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

随机推荐

  1. 再谈IT行业工程师文化

    为什么是再呢?因为“工程师文化”这种说法网上很多,各种理解,各种版 本,我只是简单说说我的认识,说的不对的地方敬请各位大牛,高手,高高手多多指教,我本身也是个技术人员,不过只是技术不怎么样而已.写这个 ...

  2. 一个高在线(可以超过1024)多线程的socket echo server(pthreads 和 libevent扩展)

    研究了3周吧,本来打算用pthreads+event扩展的,结果event扩展太原始了,太多函数了,实在不知道怎么在外部随时发送数据给客户端,所以改用libevent, 改用libevent之后花了2 ...

  3. No suitable driver found for jdbc:mysql://localhost/dbname

    把mysql-connector-java的jar包放入jdk/jre/lib/ext文件下

  4. HDU 1394 树状数组求逆序对

    Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  5. C#winform省市县联动,以及有的县是空值时显示异常的处理

    一.如下comboBox1.comboBox2.comboBox3,原来这三个都是空的, 将数据库中的省份传递到comboBox1中 我的数据库有parent字段,根据市的parent找到省,根据县的 ...

  6. 启动BPM的5个步骤

    在大部分业务中,我们通常认为:一个主要的业务流程管理项目从设计时间开始会比较好.我们知道很多方式来提高效率,增加生产力以及简化我们员工的工 作 - 这正是业务流程管理所做的.不幸的是,不管我们意图多好 ...

  7. redis2.8--主从机同步流程

  8. ubuntu 添加源

    edit file :  /etc/apt/sources.list add: deb http://mirrors.163.com/ubuntu/ intrepid main restricted ...

  9. ODI 12c中使用Groovy脚本创建工程

    本文主要介绍在ODI中使用groovy创建工程,并添加一个表转换的映射.要创建groovy脚本,可以从ODI Studio的菜单:工具->Groovy->新脚本 打开一个编辑窗口.在执行下 ...

  10. iOS中nil、Nil、NULL、NSNull详解(转)

    ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interfa ...