简介
Lex和Yacc是Unix/Linux上的词法语法分析代码生成工具,可以用来编写编译程序和解释程序,同时也可用于其他需要对结构化输入生成解析工具的场合。
Lex和Yacc的大多数版本都是生成C语言程序的,关于这两个工具的大量文档也是面向C的。本系列文章尝试介绍Lex和Yacc在delphi中的应用。
本文假定你具有Lex和Yacc的初步知识。如果你需要入门材料,可以看http://www-900.ibm.com/developerWorks/cn/linux/sdk/lex/index.shtml上的《Yacc 与 Lex 快速入门》中文版;
如果你需要全面的Lex和Yacc学习手册,介绍你看O'REILLY的《Lex和Yacc》(第二版的中文版已由机械工业出版社推出,在http://www.china-pub.com可网购。)
安装
到http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html可以下载tply4.1a.zip,这个软件包包含turbo pascal版的 Lex和Yacc源程序,文档和例子。tply4.1a可在Linux、Dos、Win16、Win32四种操作系统平台以及Free Pascal、Turbo Pascal、Borland Pascal、Delphi等多种语言环境中编译使用,在本文中我们主要介绍Delphi中的使用。
1. 下载软件包后解压缩,我们可以看到在目录中有6个批处理文件,其中maked32.bat适用于delphi。必须确保delphi\bin目录在系统搜索路径中,以让批处理文件找到delphi pascal编译程序dcc32.exe。执行maked32.bat,生成lex.exe、yacc.exe。
2. 新建目录,把lex.exe、yacc.exe、yylex.cod、yyparse.cod、lexlib.pas、yacclib.pas拷贝至新目录中,这就构造了Pascal Lex和Yacc的最小运行环境。在原目录中,README文件中有详细的安装信息,tply.doc中有详细的使用说明。