这是lex yacc for windows下载, yacc和(hé)lex在windows已经(jīng)移植成(chéng)功,其中常用的(de)一个(gè)工具就(jiù)是Parser Generator。这(zhè)个工具使用yacc和(hé)lex能够生成Visual C++,Borland C++,Other C/C++以及相关(guān)Java代码。下面介绍一下这个(gè)工具(jù)是如何生(shēng)成(chéng)代(dài)码并使用Visual C++编译的(de)。
Cygwin是Windows平台上运行的unix/linux模拟环境,由Cygnus Solutions开发(fā)。
Cygnus起初把gcc,gdb,gas等开发工具进行了改进(jìn),使他们能够(gòu)生成并(bìng)解释win32的(de)目标
文(wén)件。然后再把这些工具移植到windows平台(tái)上(shàng)去。
移值方案有多种,一(yī)是(shì)基于win32 api对这些工具的源代(dài)码进行大幅修改。但工作量太大(dà),他
们采(cǎi)取了另一种方法,即开发一个共(gòng)享库(cygwin.dll),把win32 api中(zhōng)没有的unix风格的调(diào)用(如
fork,spawn,signals,select,sockets等)封装在里面,也就是说,他(tā)们基于win32 api写了一个unix
系统库的模拟层。这(zhè)样,只要把这些工(gōng)具的源代码和这个共享库(kù)连接到(dào)一起,就(jiù)可以(yǐ)使用unix主
机上的交叉编译器来生成(chéng)可以(yǐ)在windows平台上运行(háng)的工具(jù)集。
windows下的yacc 和 flex工具,安装时(shí)注意不要有空(kōng)格,然后命令(lìng)行(háng)进(jìn)入bin目录,就可(kě)以用命令(lìng)行(háng)调(diào)用(yòng)这两个工(gōng)具了,命令行如下:
flex xx.l
bison -d xx.y
建(jiàn)立数(shù)组,将(jiāng)单(dān)词读入,对单词(cí)的ASCII码进行判断,将在ASCII码值在一定区间进行区分(使用if语句来判断),分开(kāi)来后(hòu),对其所在ASCII值(zhí)区间的不同,给予以不(bú)同的属性(比如:系统保留(liú)字…),词法分(fèn)析器完(wán)成后要(yào)能识别+,-,=等字符(fú)。
对输入的程序语句进行分析(xī)。对每个非终结点定义单个函数(shù),定(dìng)义了它的后继节点。然后用一个(gè)构造来的函(hán)数(shù),使(shǐ)定(dìng)义的后继节点符合(hé)语法,否则报错(cuò)。
