跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

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

Martin Brown (mc@mcslp.com), 自由撰稿人, Consultant
Martin Brown 成为专业作家已经超过 8 个年头。他所撰写的书籍和文章涵盖了各种各样的主题。他所擅长的领域包括大量开发语言和平台——Perl、Python、Java、JavaScript、Basic、Pascal、Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows、Solaris、Linux、BeOS、Mac OS/X 等等——以及 Web 编程、系统管理与集成。Martin 是 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 的定期投稿者。他也是 Computerworld、The Apple Blog 和其他站点以及 Microsoft的 Subject Matter Expert (SME) 的常客。您可以通过他的网站 http://www.mcslp.com 与他联系。

简介:  本文将研究使用 lex/flex 和 yacc/bison 工具构建分析器所需的步骤。首先构建一个简单的计算器,然后深入地研究如何采用相同的原则进行文本分析。分析文本,即理解和提取文本中的关键部分,是许多应用程序中一个重要的部分。在 UNIX® 中,许多操作系统组成部分都依赖于文本分析,从用来与系统进行交互的 shell,到诸如 awk or Perl 等各种常用的工具和命令,再到用来构建软件和应用程序的 C 编译器。您可以在 UNIX 应用程序(以及其他的应用程序)中使用分析器来构建简单的配置分析器,甚至构建最终的目标:您自己的编程语言。

发布日期:  2006 年 9 月 14 日
级别: 中级

访问情况 : 12975 次浏览

开始之前

UNIX® 程序员常常发现他们需要去理解文本和其他一些具有灵活的标准化格式的结构。通过使用 lex 和 yacc 工具,您可以构建一个分析引擎,根据特定的规则来处理文本。然后,可以将它集成到您的应用程序中以完成各项工作,从配置分析到构建您自己的编程语言。在学习了本教程之后,您将了解如何定义词法元素、编写 yacc 规则,并使用相应的规则机制来构建和定义各种不同的分析引擎和应用程序。

关于本教程

在 UNIX 中,有许多用来理解和提取文本的方法。您可以使用 grep、awk、Perl 和其他的解决方案。但有的时候,您需要理解和提取结构化的但格式不受限制的数据。在这种情况下,UNIX lex 和 yacc 工具就很有用处了。前面提到的那些工具,如 awk、Perl 以及 shell 和许多其他的编程语言,都使用 lex 和 yacc 来生成分析应用程序以分析和理解文本,并将其转换为所需的信息或数据结构。

Lex 是一种词法分析工具,它可以用来从源文本识别特定结构的文本字符串。Yacc 是一种语法分析器,它可以读取文本并用来将单词序列转换为便于处理的结构化的格式。

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


先决条件

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

  • Lex:这个工具是大多数 UNIX 操作系统的标准组件。GNU flex 工具提供了相同的功能。
  • Yacc:这个工具是大多数 UNIX 操作系统的标准组件。GNU bison 工具提供了相同的功能。
  • C 编译器:任何标准的 C 编译器都可以,其中包括 Gnu CC。
  • Make 工具:这个工具是使用示例 Makefile 来简化构建过程所必需的。

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

1 页,共 8 | 后一页

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=159594
TutorialTitle=使用 yacc 和 lex 编写文本分析器
publish-date=09142006
author1-email=mc@mcslp.com
author1-email-cc=