g4文件概览        在深入介绍之前,有必要先给大家了解一下g4文件的结构,以便对如何编写语法规则文件有个全局的认识,我想这是大有禆益的.因为这样我们就可以很清晰地知道需要的东西写在哪里,或者哪些东西是无法加到antlr中的. grammar Name; options {...} import ...; tokens {...} @actionName {...} <<rule1>> ... <<rule2>> 这是一个完整的antlr语法规则文件,…
antlr v4 开发环境         从上一篇文章的例子中可以知道,antlr有一套自己的语法来声明目标语言的语法,因此它本身就需要编译或者使用antlr提供的api来读取这些语法规则,并使之可以在目标平台上使用.比如我在用Java写一个SQL语言的解析工具,那么antlr就需要有Java平台的API给我使用.确实也是如此,只不过antlr除了提供这些API外,还会将g4这些语法文件编译成目标平台的类文件(仅对Java而言,其他语言也会编译成对应的文件).这些编译生成的文件不需要使用者去关…
antlr v4简介        antlr是一个强大语言解析工具,可以用于处理结构化文本.二进制文件.说白了,其实可以这么认为,antlr是一个更强大的正则表达式工具.它可以完成更多正则表达式无法完成的工作.正则表达式更适合于做一些文本匹配.拆分.替换的工作,也就是说,正则表达式关注的是文本大区块.相对于antlr这类语言解析工具来说,正则表达式是一个粗粒度的工具,antlr则侧重于细粒度.antlr可以具体到每一个语法.词法.熟知Java api的猿粪们都知道,java的正则api会有栈溢…
如何编写词法定义        继上一篇文章,相信大家都明了编写词法规则的两个基本原则.那么接下来就可以开始编写词法文件了.对于计算机科学来说,很多词法规则是一致的.如标识符.数字等,它们都可以重复在多个项目中应用,这是题外话. 在词法文件中,除了词法定义之外,还有一些可选项,应该要先说明一下.匆匆一瞥,以览概貌,这是我一贯的风格. fragment 词法片段,构成词法的元素,不是一个词法规则.在词法规则中可引用一个或多个词法片段.如: fragement DIGIT : [0-9]; INTE…
词法规则入门 黄金定律一二 若输入串能被多个词法规则匹配,那么声明在词法文件最前面的规则生效. parser parser grammar HelloParser; options { language=Java; tokenVocab=HelloLexer; } start : HI ID; lexer例1 lexer grammar HelloLexer; //Definea grammar called Hello ID : [a-zA-Z]+; HI : 'H' 'I'; WS : [\…
1 重逢ANTLR 最早知道ANTLR是当年学习Apache Derby数据库源码时,在看到SQL解析那一层时,第一次看到编译原理在实际项目中的应用,惊叹之余也只能望而却步.之前也根据网上一些资料尝试了一下,看介绍说ANTLR v4更加易用了,于是又好奇地试用一下.以下入门介绍主要参考ANTLR作者写的<The Definitive ANTLR 4 Reference>. 1.1 ANTLR全景 当我们实现一种语言时,我们需要构建读取句子(sentence)的应用,并对输入中的元素做出反应.如…
ANTLR v4是一款强大的语法分析器生成器,可以用来读取.处理.执行和转换结构化文本或二进制文件.通过称为文法的形式化语言描述,ANTLR可以为该语言自动生成词法分析器.生成的语法分析器可以自动构建语法分析树,它是表示文法如何匹配输入的数据结构.ANTLR还可以自动生成树遍历器,用来访问树节点以执行特定的代码. ANTLR v4的语法分析器使用一种新的称为Adaptive LL(*)或ALL(*)的语法分析技术,它可以在生成的语法分析器执行前在运行时动态地而不是静态地执行语法分析. ANTLR…
1.标签元素更加语义化   2.内容类型仍然为“text/html”    扩展符仍然为html或者htm.    <1>DOCTYPE 声明<!DOCTYPE html>就可以.不需要使用版本声明.    <2>制定字符编码<meta charset="UTF-8">,不需要使用HTML4中的<meta http-equiv="Content-type" content="text/html;char…
如: make > results 2>&1 重定向 > results让文件描述符1(标准输出)作为文件results,接下来的重定向2>&1有两个部分.2>重定向文件描述符2,也就是标准错误输出.而&1是Shell的语法:无论文件描述符1在哪里.在本例中,文件描述符1是results文件,所以那里就是文件描述符2要附加的地方.需特别留意的一点是:在命令行上,这4个字符2>&1必须连在一起,中间不能有任何空格. P160…
Odoo是什么 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规模的企业应用. Odoo功能模块涵盖了各方面的企业应用:CRM.订单处理(销售订单和采购订单).电子商务.MRP.财务.库存.门店零售.项目管理等等. Odoo是完全的模块化结构,初始安装时候,系统没有加载任何应用模块,而后可以根据需要安装对应的功能模块. Odoo是世界上安装数量最多,用…