WEB开发网
开发学院操作系统Linux/Unix 使用 yacc 和 lex 编写文本分析器 阅读

使用 yacc 和 lex 编写文本分析器

 2008-11-13 08:32:06 来源:WEB开发网   
核心提示: 在本教程中,首先您将研究如何使用 lex 和 yacc 来构建一个计算器,使用 yacc 和 lex 编写文本分析器(2),使用该计算器作为示例,您将进一步研究 lex 和 yacc 系统生成的输出和信息,因此,如果将输入分解为您所看到的和该信息结构的组合,并学习如何使用它来分析其他类型的

在本教程中,首先您将研究如何使用 lex 和 yacc 来构建一个计算器。使用该计算器作为示例,您将进一步研究 lex 和 yacc 系统生成的输出和信息,并学习如何使用它来分析其他类型的信息。

先决条件

要使用在本教程中的示例,您需要使用到下列工具:

Lex:这个工具是大多数 UNIX 操作系统的标准组件。GNU flex 工具提供了相同的功能。

Yacc:这个工具是大多数 UNIX 操作系统的标准组件。GNU bison 工具提供了相同的功能。

C 编译器:任何标准的 C 编译器都可以,其中包括 Gnu CC。

Make 工具:这个工具是使用示例 Makefile 来简化构建过程所必需的。

可以从 GNU Web 站点或本地的 GNU 镜像站点下载 GNU 工具。

使用 lex 进行词法分析

编写文本分析器的第一步是要能够识别所读取的内容。有许多不同的方法可以完成这项任务,但是最简单的方法是使用 lex,它是将输入信息转换为一系列标记的工具。

什么是词法分析?

当使用编程语言编写程序或在命令行中输入命令时,您是否想过究竟执行了什么操作将您输入的内容转换为一组指令呢?

这个处理过程非常简单,却又相当复杂。它很复杂,这是因为对于可能输入的信息,表面上看起来似乎存在无限种可能的组合和序列。例如,要使用 Perl 语言遍历一个哈希表,您可以使用如清单 1 所示的序列。

清单 1. 在 Perl 中遍历一个哈希表

foreach $key (keys %hash)
{
...
}

其中的每一项都是有意义的,虽然方式有所不同,这正是该处理过程的简单明了之处。清单 1 中所示的表达式存在一个对应的结构,也就是说,与人类语言一样,编程语言中也存在着特定的规则。因此,如果将输入分解为您所看到的和该信息结构的组合,那么对该内容的分析过程则相当简单。

上一页  1 2 3 4 5 6 7  下一页

Tags:使用 yacc lex

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接