博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《ANTLR 4权威指南》——第3章入门的ANTLR项目
阅读量:6291 次
发布时间:2019-06-22

本文共 838 字,大约阅读时间需要 2 分钟。

本节书摘来自华章社区《ANTLR 4权威指南》一书中的第3章入门的ANTLR项目,作者[美] 特恩斯·帕尔(Terence Parr),更多章节内容可以访问云栖社区“华章社区”公众号查看

第3章

入门的ANTLR项目
作为我们的第一个ANTLR项目,我们会构造一个语法,它是C语言或其继承者Java语法的一个很小的子集。具体来说,我们将识别包裹在花括号或者嵌套的花括号中的一些整数,像是{1, 2, 3}和{1, {2, 3}, 4}这样。这样的结构可以作为int数组或者C语言中的结构体的初始化语句。在很多情况下,针对这种语法的语法分析器都非常有用。例如,我们可以用它来构建一个对C语言的源代码进行重构的工具,这个工具能够完成这样的工作:如果初始化语句中所有的整数值都能用一个字节表示,那么将该整数数组转换为字节数组。我们也可以用这个语法分析器将Java的short数组转换为字符串。例如,我们可以将short值当作Unicode字符,从而将

c43ecf3d455755c47c231e4388a7367229473be9

其中像u0001这样的Unicode字符标记使用四个十六进制数字来表示一个16位的字符。实际上,这样的字符就是一个short值。

我们这样做的原因是为了不受Java的.class文件格式的限制。Java的class文件将数组的初始化语句存储为一系列显式的数组元素赋值语句,上面的初始化语句等价为data[0] = 1; data[1] = 2; data[2] = 3;。这限制了我们能够使用这种方法来初始化的数组的大小。相比之下,Java的class文件将字符串存储为连续的short序列,从而不受上述约束限制。将数组的初始化语句转换为字符串可以得到更紧凑的class文件,避免了Java的对初始化方法的长度限制。
通过这个入门的项目示例,你将会学到如下内容:一些ANTLR语法的语义元素定义、ANTLR根据语法自动生成代码的机制、如何将自动生成的语法分析器和Java程序集成,以及如何使用语法分析树监听器编写一个代码翻译工具。

转载地址:http://lmuta.baihongyu.com/

你可能感兴趣的文章
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>
《UNIX/Linux 系统管理技术手册(第四版)》——1.10 其他的权威文档
查看>>
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《算法基础:打开算法之门》一3.4 归并排序
查看>>
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>