![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
antlr
文章平均质量分 78
Gent_倪
吹灭读书灯,一身都是月。
展开
-
Antlr4入门(七)错误报告与恢复
ANTLR提供了优秀的错误报告功能和复杂的错误恢复机制,基于此,ANTLR生成的语法分析器能够自动地在遇到句法错误时产生丰富的错误信息,并且能够在大多数的情况下成功地完成重新同步(resynchronize)。这样的语法分析器甚至能够保证只为每个句法错误产生一条错误信息。一、错误处理入门...原创 2021-07-18 14:07:52 · 2234 阅读 · 1 评论 -
Antlr4入门(六)实战之JSON
本章中,我们将学习编写JSON语法文件,即如何通过阅读参考手册、样例代码和已有的非ANTLR语法来构造完整的语法。接着我们将使用监听器或访问器来将JSON格式转成XML。注:JSON是一种存储键值对的数据结构,由于值本身也可以作为键值对的容器,JSON中可以包含嵌套结构。一、自顶向下的设计——编写JSON语法在本章中,我们的目标是通过阅读JSON参考手册、查看它的语法描述图和现有的语法来构造一个能够解析JSON的ANTLR语法。下面,我们将从JSON参考手册中提取关键词汇,然后一步步将它们编.原创 2020-06-05 15:21:23 · 2648 阅读 · 0 评论 -
Antlr4入门(五)实战之CSV
在前面的章节中,我们已经学习了如何编写语法文件和使用监听器和访问器来实现具体的动作。现在,是时候使用这些知识来构造真实世界的语法了。在本章中,我们将从最简单的CSV(comma-separated-value)格式开始,学习如何通过阅读参考手册、样例代码和已有的非ANTLR语法来构造完整的语法,并使用监听器或访问器来将CSV转成Map。一、自顶向下的设计——编写CSV语法设计良好的语法反应了编程世界中的功能分解或者自顶向下的设计。这意味着我们对语言结构的辨识是从最粗的粒度开始,一直进行到最详细的.原创 2020-06-04 17:05:36 · 1924 阅读 · 0 评论 -
Antlr4入门(四)监听器、访问器与语法分析树的标注
ANTLR的运行库提供了两种遍历树的机制:语法分析树监听器与访问器。通过它们,我们可以在遍历树的时候实现相应逻辑。在本章中,我们将通过编写一个简单的计算器来探究三种在事件方法中共享信息的途径。一、计算器语法文件按照上一章“Antlr4入门(三)如何编写语法文件”所学的内容,我们可以很轻松的写出一个只支持加法和乘法的计算器语法文件。grammar ExprTest;cal : expr;expr : expr MUL expr # Mul | expr ADD exp.原创 2020-06-04 14:58:33 · 5496 阅读 · 1 评论 -
Antlr4入门(三)如何编写语法文件
本章我们将会学习词法及语法规则,以及四种抽象的计算机语言模式。因为ANTLR的语法规则跟正则表达式是很类似的,所以还是推荐先阅读下正则表达式的相关内容,这样在编写语法文件时可以事半功倍。一、四种语言模式虽然在过去的50年里人们发明了许许多多的编程语言,但是,相对而言,基本的语言模式种类并不多。之所以如此,是因为人们在设计编程语言的时候,倾向于将它们设计成与脑海中的自然语言相类似。我们希望符号按照有效的顺序排列,并且符号之间拥有着特定的依赖关系。举个例子,{(}) 就是不符合语法的,因为符号的顺序.原创 2020-06-04 12:43:51 · 10649 阅读 · 3 评论 -
Antlr4入门(二)基本概念解析
在上一章中(Antlr4入门(一)IDEA中Antlr的安装与使用),我们安装了Antlr,并编写运行了第一个程序“Hello world”。而在本章中,我们将学习语言类应用程序相关的重要过程、术语和数据结构。一. 术语语言(language)是由一系列有意义的语句组成,语句(sentence)由词组组成,词组(phrase)是由更小的子词组(subphrase)和词汇符号(vocabulary symbols)组成。举个例子,英语就是一种语言,“Keep on going never gi.原创 2020-05-29 18:35:08 · 4030 阅读 · 3 评论 -
Antlr4入门(一)IDEA中Antlr的安装与使用
Antlr (ANother Tool for Language Recognition) 是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本或者二进制文件。它被广泛应用于学术领域和工业生产实践,是众多语言、工具和框架的基石。我们可以使用Antlr来开发DSL(Domain Specific Language,领域特定语言),或者一些实用工具,比如配置文件读取器、遗留代码转换器和Json解析器等等。作为Antlr入门的第一章,我们的目标是大体上知道Antlr能做什么。为此,我们.原创 2020-05-27 17:49:18 · 14057 阅读 · 15 评论