天天看点

编译原理-词法分析器1(lex实现)

编译原理课实验一是词法分析器,但是在网上查了很多资料,发现用lex实现还要用Linux,Windows可以用对应的flex实现,但是网上的资料很零散,所以整理了一下从安装到配置,到实现一个词法分析器的过程

一、 安装

  1. 下载flex和bison

    UnxUtils: http://pan.baidu.com/s/1o6NY1E6

    Updates:http://pan.baidu.com/s/1o6NY1E6

    保存在E:\lex\cywin

  2. 使用的flex和bison都是GNU的工具,GCC既采用C/C++的编译器也采用GNU的编译器,Windows平台的GCC主要是MinGW编译器,下载地址:

    https://sourceforge.net/projects/mingw/files/Installer/mingw-get/catalogue/msys-package-list.xml.lzma/download

    或者

    http://www.mingw-w64.org/doku.php

    保存在E:\lex\GnuWin32

  3. 下载Parser Generator

    http://www.bumblebeesoftware.com/downloads.htm

    二、 配置环境变量

    下载UnxUtils以及UnxUpdates之后,解压到自己的文件夹,把/usr/local/wbin文件夹的绝对地址加到

    我的电脑(右键)->属性->高级->环境变量->系统变量->path值

    三、 安装MinGW

  4. 安装过程简图

    点击mingw-get-setup.exe

编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
  1. 打开安装好的软件,选Basic Setup,在右侧选择mingw32-gcc-g++,鼠标右键点击Mark for Installation,然后点击左上角的Installation按钮,选择Apply Changes,弹出对话框点击Apply,安装对应的编辑器
  2. 设置环境变量

    进入MinGW的安装路径E:\lex\GnuWin32,将bin的绝对路径添加到path中(E:\lex\GnuWin32\bin)

    我的电脑(右键)->属性->高级->环境变量->系统变量->path值

  3. 检查安装完成

    打开cmd,输入gcc -v,显示如下即为安装成功

    编译原理-词法分析器1(lex实现)
    四、 Parser Generator的配置
  4. 打开Parser Generator
  5. 菜单project->LibBuilder选第一个
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)

3. 配置好后点击built

编译原理-词法分析器1(lex实现)

4. 建立一个project

<1>project->ParserWizard

<2>工程设定(语言可选C/C++/JAVA)

<3>工程设定(是否带main函数的YACC文件或LEX文件)

<4>YACC文件设定

<5>LEX文件设定

<6>编辑好代码后project->Rebuild All

上图:

编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)

五、 配置VC6.0

  1. 打开cmd,一直到1.l存在的文件夹的目录下
    编译原理-词法分析器1(lex实现)
  2. Flex 1.l,此时再打开1.l的文件夹会发现出现lex.yy.c文件
    编译原理-词法分析器1(lex实现)
  3. 那么现在开始配置VC,首先导入Parser Generator的库文件和源文件

    Tools->Options,设置Iuclude files,library files,Source files

编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)

4. project->Settings

Win32 Debug

C/C++ -> preprocessor definitions添加宏定义,YYDEBUG

Link -> Object/Library Modules 加yld,lib

Win32 Release

Link -> Object/Library Modules 加yld,lib

编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
编译原理-词法分析器1(lex实现)
  1. 将lex.yy.c添加到Source Files

    将1.h添加到Header Files

    编译原理-词法分析器1(lex实现)
  2. 编译运行就OK啦
  3. 或者在DOS下运行
    编译原理-词法分析器1(lex实现)