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

引用 Terence Parr. The Definitive ANTLR Reference, Building Domain Specific Languages(antlr3 version).   前言 [1]为什么有了lex/yacc(flex/bison),为什Parr还要写个ANTLR? C语言是拿着剃须刀在滑冰,Java是“隐藏”了指针的支持OO的C语言族中相对简单的语言,随着Martin的DSL概念深入人心,不管怎样,还是印证了那句话:模仿是最大的恭维.尽管这对有10+编译器方…
前言 这段时间在公司忙的跟狗似的,但忙的是没多少技术含量的活儿. 终于将AST IR和tree grammar过了一遍,计划明天写完这部分的读书笔记.   内容 1 内部表示AST构建 2 树文法     1 内部表示AST构建 内部表示(intermediate form, IR)的引入理由 分治策略,通常翻译程序语言的工作无法在单一步骤内完成,将其划分为一系列相互关联的步骤,如识别token.填充数据结构(符号表等).提交输出: 有do one thing, do one thing wel…
前言 程序语言是什么? 用wiki上的描述,程序语言是一种人工设计的语言,用于通过指令与机器交互:程序语言是编程程序的标记,而程序是一种计算或算法的描述.详细介绍和背景信息参考: Programming_language(http://en.wikipedia.org/wiki/Programming_language) Programming_language_generations(http://en.wikipedia.org/wiki/Programming_language_gener…
前言 不要让用户被那些“专业术语”吓住! 用心设计的提示和反馈信息是软件设计者的“职业良心”.   内容 1 存在哪些错误? 2 美化错误提示 3 错误恢复策略   1 存在哪些错误? 在DSL语言开发周期内,首先需要设计文法,根据文法生成翻译器,然后输入语言样本测试翻译器的效果,以及根据存在的翻译问题调整翻译策略.这其中就可能存在两类错误:文法错误和语言样本错误. 在Parr将一些错误拉出来游街,以及盛赞ANTLR在错误提示和恢复方面的优异表现的描述中,可以观察到一些错误提示和恢复的策略和惯例…
前言 真正意义上的程序员都很懒,懒的连多余的一行代码也不写. 如果能将底层满手油污的活儿都可以交给别人去做,自己就扮演个智囊团成员的角色,生活会比想象中的还要惬意. 严格的按照指令执行长时间不知疲倦的计算是计算机所擅长的事情,那么给它一个代码模板,留些运行时它可以获取的值的占位符,再揉进一些固定套路的指令,程序员的生活也可以很美好. 尽管如此,但工具永远不是软件工程中的银弹(看看人月神话吧),适可而止,让富有攻击性的洞察力指引前进的方向,而在实际工作中持适当的保守性态度.   内容 1 Stri…
前言 仅生成给出true/false的识别器是没有多大用处的,自然的就有在识别过程中遇到某一结构时执行一段代码.存储该结构中信息的想法. ANTLR提供了在文法中嵌入属性和动作超级混合“文法”,可以生成内部表示AST或模板:当然如果直接输出部分结构识别结果的话动作也可以应付.   内容 基本与原文第6章一致 属性和动作 1 文法动作 2 Token属性 3 预定义规则属性 4 属性作用域 5 在动作中引用属性   属性和动作 用几个实例予以说明,动作中语言均是Java. [ex1]动作可以在规则…
前言 学习框架或第三方库的方法是什么 (1)少量的浏览manual或tutoral,只关注程序所需的特征,再完善其详细内容和特征的认识? (2)花大量的时间研究详细内容,再考虑程序实现? 这是个先有鸡还是先有蛋的问题,因这是私底下的项目,我倾向于后者.   当前已对ANTLR文法有了一些了解,这篇是概览性知识的最后一部分. 初步将ANTLR的涉及的面向应用的内容划分了一下: [1]文法:lexer, parser, tree parser [2]动作和属性 [3]内部表示:AST [4]模板语言…
前言 文中第4章内容有点多,有点枯燥,但不坚持一下,之前所做的工作就白做了. 再次确认一下总体目标: protege4编辑器中Class Definition中语法解析和错误提示: Java虚拟机规范7版中描述符和签名语法的解析器.   内容 按照文中章节组织,记录重要知识点. 这部分内容需要在后面的学习过程中回来再做理解.   4 ANTLR Grammars 4.1 Describing Languages with Formal Grammars 4.2 Overall ANTLR Gra…
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes keyboard commands and passes them to the operating system to carry out. 提示符 $被称作shell prompt,它表明shell准备好接收输入. 通常是包含了你的用户名和机器名(username@machinename),之后是当前的…
HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读一遍之后,会对HTTP有个总体认识.然后你可以根据文章中的关键点,去查找更详细的细节.这就是读书的第二重境界,将书读厚. HTTP(hypertext transfer protocol,超文本传输协议)是万维网进行通信时所使用的协议方案.HTTP有很多应用,但最著名的是用于Web浏览器和Web服务…