《ANTLR 4权威指南》——3.3 将生成的语法分析器与Java程序集成

3.3 将生成的语法分析器与Java程序集成

在语法准备就绪之后,我们就可以将ANTLR自动生成的代码和一个更大的程序进行集成。在本节中,我们将会使用一个简单的Java示例程序的main()方法调用我们的“初始化语句解析器”,并打印出和TestRig的“-tree”选项类似的语法分析树。下面是完整的Test.java程序,它体现出了2.1节中的完整的识别流程。

上面的程序使用了很多ANTLR运行库的类,像是CommonTokenStream和ParseTree,我们将在4.1节中深入学习它们。

下面是编译运行Test的方式:

ANTLR还能自动报告语法错误,并从语法错误中恢复。例如,如果我们输入一个缺失最后的右花括号的初始化语句,结果会是下面这样:

现在,我们已经知道了如何对一个语法运行ANTLR工具,以及如何将自动生成的语法分析器和一个微型的Java程序集成。不过,一个仅仅能够检查语法正确性的程序并没有什么亮点,我们要构建的是一个能够将short数组初始化语句转换为String对象的翻译器。

时间: 2024-11-08 19:36:00

《ANTLR 4权威指南》——3.3 将生成的语法分析器与Java程序集成的相关文章

《ANTLR 4权威指南 》一3.3 将生成的语法分析器与Java程序集成

3.3 将生成的语法分析器与Java程序集成 在语法准备就绪之后,我们就可以将ANTLR自动生成的代码和一个更大的程序进行集成.在本节中,我们将会使用一个简单的Java示例程序的main()方法调用我们的"初始化语句解析器",并打印出和TestRig的"-tree"选项类似的语法分析树.下面是完整的Test.java程序,它体现出了2.1节中的完整的识别流程. 上面的程序使用了很多ANTLR运行库的类,像是CommonTokenStream和ParseTree,我们

《ANTLR 4权威指南》——3.4 构建一个语言类应用程序

3.4 构建一个语言类应用程序 我们继续完成能够处理数组初始化语句的示例程序,下一个目标是能够翻译初始化语句,而不仅仅是能够识别它们.例如,我们想要将Java中,类似{ 99, 3, 451 }的short数组翻译成"\u0063\u0003\u01c3".注意,其中十进制数字99的十六进制表示是63. 为了完成这项工作,程序必须能够从语法分析树中提取数据.最简单的方案是使用ANTLR内置的语法分析树遍历器进行深度优先遍历,然后在它触发的一系列回调函数中进行适当的操作.正如我们之前看到

《ANTLR 4权威指南》——3.4节构建一个语言类应用程序

3.4 构建一个语言类应用程序 我们继续完成能够处理数组初始化语句的示例程序,下一个目标是能够翻译初始化语句,而不仅仅是能够识别它们.例如,我们想要将Java中,类似{ 99, 3, 451 }的short数组翻译成"\u0063\u0003\u01c3".注意,其中十进制数字99的十六进制表示是63. 为了完成这项工作,程序必须能够从语法分析树中提取数据.最简单的方案是使用ANTLR内置的语法分析树遍历器进行深度优先遍历,然后在它触发的一系列回调函数中进行适当的操作.正如我们之前看到

《ANTLR 4权威指南》——第3章 入门的ANTLR项目 3.1 ANTLR工具、运行库以及自动生成的代码

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

《ANTLR 4权威指南 》一导读

前 言 ANTLR是一款强大的语法分析器生成工具,可用于读取.处理.执行和翻译结构化的文本或二进制文件.它被广泛应用于学术领域和工业生产实践,是众多语言.工具和框架的基石.Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询:Hadoop生态系统中的Hive.Pig.数据仓库和分析系统所使用的语言都用到了ANTLR:Lex Machina将ANTLR用于分析法律文本:Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR:NetBeans公司的IDE使用ANTLR来解

《ANTLR 4权威指南》——导读

前 言 ANTLR是一款强大的语法分析器生成工具,可用于读取.处理.执行和翻译结构化的文本或二进制文件.它被广泛应用于学术领域和工业生产实践,是众多语言.工具和框架的基石.Twitter搜索使用ANTLR进行语法分析,每天处理超过20亿次查询:Hadoop生态系统中的Hive.Pig.数据仓库和分析系统所使用的语言都用到了ANTLR:Lex Machina将ANTLR用于分析法律文本:Oracle公司在SQL开发者IDE和迁移工具中使用了ANTLR:NetBeans公司的IDE使用ANTLR来解

《ANTLR 4权威指南 》一第3章 入门的ANTLR项目

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

《ANTLR 4权威指南》——3.1节ANTLR工具、运行库以及自动生成的代码

3.1 ANTLR工具.运行库以及自动生成的代码 在开始前,我们先浏览一下ANTLR的jar包中的内容.在ANTLR的jar包中存在两个关键部分:ANTLR工具和ANTLR运行库(运行时语法分析)API.通常,当说到"对一个语法运行ANTLR"时,我们指的是运行ANTLR工具,即org.antlr.v4.Tool类来生成一些代码(语法分析器和词法分析器),它们能够识别使用这份语法代表的语言所写成的语句.词法分析器将输入的字符流分解为词法符号序列,然后将它们传递给能够进行语法检查的语法分

《ANTLR 4权威指南》——第2章 纵 观 全 局 2.1 从ANTLR元语言开始

第2章 纵 观 全 局 在上一章中,我们安装了ANTLR,了解了如何构建和运行一个简单的示例语法.在本章中,我们将纵观全局,学习语言类应用程序相关的重要过程.术语和数据结构.随着学习的深入,我们将认识一些关键的ANTLR对象,并简单了解ANTLR在背后帮助我们完成的工作. 2.1 从ANTLR元语言开始 为了实现一门编程语言,我们需要构建一个程序,读取输入的语句,对其中的词组和输入符号进行正确的处理.语言(language)由一系列有意义的语句组成,语句(sentence)由词组组成,词组(ph