前言
学习框架或第三方库的方法是什么
(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. ID3

    # -*- coding: utf-8 -*- import copy from numpy import * import math class ID3DTree(object): def __in ...

  2. 铁人系列 (1) uva 10385

    uva  10385 列出n-1个一元方程,对应成单峰函数,所以用三分求解即可. #include <cstdio> #include <cstring> #include & ...

  3. [Js]面向对象的拖拽

    <html xmlns="http://www.w3.org/1999/xhtml"><head><style>#div1 {width:100 ...

  4. Windows多线程编程总结

    1 内核对象 1 .1 内核对象的概念 内核对象是内核分配的一个内存块,这种内存块是一个数据结构,表示内核对象的各种特征.并且只能由内核来访问.应用程序若需要访问内核对象,需要通过操作系统提供的函数来 ...

  5. 一模 (4) day1

    第一题: 题目大意:给出N个人之间转账的手续X%,求出A转给B至少要多少钱才能使B得到100元.结果保留8位小数:N<=2000 解题过程: 1.很容易看出这题的图论模型,每条边的权值就是(1- ...

  6. C#Base64编码

    一. Base64的编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码.它将需要编码的数据拆分成字节数组.以3个字节为一组.按顺序排列24 位数据,再把这24位数据 ...

  7. 关于SharePoint REST中的授权的研究

    博客地址:http://blog.csdn.net/FoxDave 当我们开发SharePoint APP需要调用REST服务时,可以使用OAuth完成授权,也可以使用跨域库.以下是微软专家的一段注解 ...

  8. Oracle Enterprise Metadata Management (简称OEMM,Oracle元数据管理)12.1.3.0.1已经发布

    在数据处理及数据仓库建设中,元数据管理是必不可少的,OEMM可以解决元数据管理过程中各种关键业务问题和技术挑战,其中包括如何元数据的统计信息,了解变更数据之后对下游的影响范围,而且OEMM站在业务的角 ...

  9. C# 使用命令行编译单个CS文件

    编译单个CS文件. 1.编译   File.cs   以产生   File.exe:       csc   File.cs     2.编译   File.cs   以产生   File.dll:  ...

  10. EditText提示文字

    如图,在没有输入文字前,会显示提醒文字. 引用的是文本文件(strings.xml)中的对应文字 activity_main.xml对应的红色代码: <?xml version="1. ...