前言
学习框架或第三方库的方法是什么
(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. Thinking in java之正则表达式小例子

    public static final String POEM= "Twas brilling, and the slithy toves\n" + "Did gyre ...

  2. DML数据操作语言练习

    --创建表T_HQ_BM2 --create table t_hq_bm2 as select * from t_hq_bm; commit; --添加行内容 --insert into t_hq_b ...

  3. 安装VMWare tools,以及解决安装后/mnt中有hgfs但没共享文件的方法

    一.首先是安装VMWare tools   安装过程可参考:Installing VMware Tools in an Ubuntu virtual machine   安装成功后,可看的如下信息: ...

  4. MySql插入记录时判断

    我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录. 这样的逻辑固然可以通过两条sql语句完成. SE ...

  5. C 记录

    为什么调用 sqrt 函数报错显示未定义 一.调用此函数时,要先引用头文件:#include <math.h>二.linux gcc 编译时,如果用到了 math中的函数,要手工加入函数库 ...

  6. CSS 水平居中

    一.水平居中:行内元素解决方案 居中元素:文字.链接以及其它行内元素(inline或inline-*类型的元素,如inline-block,inline-table,inline-flex)解决方案: ...

  7. JVM-class文件完全解析-类索引,父类索引和索引集合

    类索引,父类索引和接口索引集合 前面介绍了class文件,从头开始的魔数,次版本号,主版本号,常量池入口,常量池,访问标志.那么再接下来的就是用来确定这个类的继承关系的类索引,父类索引和接口索引集合这 ...

  8. 端口占用问题——netstat命令

    1.查看所有的端口占用情况 C:\>netstat -ano 协议 本地地址            外部地址   状态           PID(进程号) TCP 127.0.0.1:1434 ...

  9. win10系统输入法用户体验

    因为现在的输入法好多的广告弹窗所以我一直用系统原生的输入法,自从去年升级win10以后一直在用自带的输入法, 1.用户界面设计 win10系统自带的输入法用户界面设计非常扁平化,没有哪些所谓的皮肤啥的 ...

  10. 关于wait和notify的用法

    通常,多线程之间需要协调工作.例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程 downloadThread将该图片下载完毕.如果图片还没有下载完,d ...