lex&yacc安装配置

 

lex

Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。 当 Lex 接收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。 它一次读入一个输入字符,直到找到一个匹配的模式。 如果能够找到一个匹配的模式,Lex 就执行相关的动作(可能包括返回一个标记)。 另一方面,如果没有可以匹配的常规表达式,将会停止进一步的处理,Lex 将显示一个错误消息。

yacc

Yacc 代表 Yet Another Compiler Compiler。 Yacc 的 GNU 版叫做 Bison。它是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语 法解析器。

借助lex和yacc,我们可以很容易地开发出所谓的编译器。linux下有很多很方便的小工具,linux系统已经自带有扫描器(flex)与解释器(bison)。幸运的是这些小工具一般都有windows的版本。现在我就简单说一下如何在windows下安装这些小工具。

 

1. 首先下载unxutils压缩包 http://sourceforge.net/search/?type_of_search=soft&words=unxutils&search=Search

2.把压缩包解压到一个文件夹,例如我的解压包放在  E:/compiler/UnxUtils下

3.配置环境变量。分别把unxtils下的lib与wbin两个子文件夹路径添加到环境变量path中。

a.在控制台上输入命令:

path=%path%; E:/compiler/UnxUtils/usr/local/lib

path=%path%; E:/compiler/UnxUtils/usr/local/wbin

b.直接在“系统属性”的环境变量上配置。

4.在解压包中的E:/compiler/UnxUtils/usr/local/share下有两个文件,bison.hairy,bison.simple,为这两个文件建立两个环境变量。(Administrator的用户变量)

变量

bison_hairy      E:/compiler/UnxUtils/usr/local/share/bison.hairy      (注意变量名称必须为 bison_hairy)

bison_simple    E:/compiler/UnxUtils/usr/local/share/bison.simple   (注意变量名称必须为 bison_simple)

 

至此万事俱备,我们可以开始两个简单的文件来测试一下。

1.新建文本文件,更改名称为lex.l,敲入下面代码

%{

int yywrap(void);

%}

%%

%%

int yywrap(void)

{

return 1;

}

2.新建文本文件,更改名称为yacc.y,敲入下面代码

 

%{

void yyerror(const char *s);

%}

%%

program:

       ;

%%

void yyerror(const char *s)

{

}

int main()

{

        yyparse();

        return 0;

我们暂且不讨论上面代码的意思。

打开控制台,进入到刚才所建立文件(lex.l,yacc.y)所在的文件夹。

1.输入 flex lex.l

2.输入 bison yacc.y

如果我们看到当前文件夹上多了两个文件(yacc.tab.c,lex.yy.c),那么说明lex&&yacc已经安装配置成功,接下来就好好享受这两个小工具的魅力吧。

 

问题:

1.在控制台输入 flex lex.l时,提示" 'flex' 不是内部命令或外部命令,也不是可运行的程序或批处理文件"则说明环境变量的path设置不正解。

2.在控制台输入 bison yacc.y时,提示“bison : /usr/local/share/bison.simple: No such file or directory ”最有可能是上面“Administrator的用户变量”中变量的名称设置不正确(必须为bison_simple).

 

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
在 CLion 中配置 LexYacc 需要以下步骤: 1. 安装 Flex 和 Bison 在 Linux 上,可以通过以下命令安装 Flex 和 Bison: ``` sudo apt-get install flex bison ``` 在 macOS 上,可以通过以下命令使用 Homebrew 安装 Flex 和 Bison: ``` brew install flex bison ``` 2. 配置 CMakeLists.txt 文件 在项目的 CMakeLists.txt 文件中添加以下内容: ``` find_package(BISON) find_package(FLEX) BISON_TARGET(MyParser ${CMAKE_CURRENT_SOURCE_DIR}/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.tab.cpp) FLEX_TARGET(MyScanner ${CMAKE_CURRENT_SOURCE_DIR}/scanner.l ${CMAKE_CURRENT_BINARY_DIR}/scanner.cpp) ADD_FLEX_BISON_DEPENDENCY(MyScanner MyParser) add_executable(my_program ${BISON_MyParser_OUTPUTS} ${FLEX_MyScanner_OUTPUTS} main.cpp) ``` 这段代码使用 `find_package` 命令查找 Flex 和 Bison,然后使用 `BISON_TARGET` 和 `FLEX_TARGET` 命令分别生成解析器和词法分析器的源代码,最后通过 `ADD_FLEX_BISON_DEPENDENCY` 命令将它们与主程序关联起来。 3. 添加 LexYacc 文件 在项目的根目录下创建一个名为 `parser.y` 的文件,里面包含 Yacc 的语法规则。接着创建一个名为 `scanner.l` 的文件,里面包含 Lex 的词法规则。 4. 构建项目 现在可以使用 CLion 来构建项目并运行程序了。如果一切都配置正确,程序应该能够正确解析和分析输入的文本。 注意:Flex 和 Bison 的语法规则是使用 C 语言编写的,因此在编写规则时需要遵循 C 语言的语法规则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值