【学习过程】编译原理 Flex bison
程序员文章站
2024-03-23 18:47:04
...
实验三 使用Lex自动生成扫描程序
需要工具:flex, bison
前期准备:
1、下载flex, bison,正常下载安装
网址:http://gnuwin32.sourceforge.net/packages/flex.htm
http://gnuwin32.sourceforge.net/packages/bison.htm
2、测试
一个简单的示例:文件名fb1-1.l (一杠一 后缀字母L)
%{
int chars = 0;
int words = 0;
int lines = 0;
%}
%%
[a-zA-Z]+ {words++; chars += strlen(yytext);}
\n { chars++; lines++; }
. { chars++; }
%%
int main(int argc, char **argv){
yylex();
printf("%8d%8d%8d\n", lines, words, chars);
}
在powershell里面输入以下命令生成 .c文件
flex fb1-1.l //generates a new file named "lex.yy.c"
问题如下:
1、但是编译的时候出现了问题,显示无法编译 .c 文件
通过安装最新的GCC解决了问题
下载网址https://sourceforge.net/projects/mingw/files/中的downloads
2、在编译的时候显示fb1-1.l:9:20:
C:\Users\xxxx\AppData\Local\Temp\ccMYKMLn.o:lex.yy.c:(.text+0x316): undefined reference to `yywrap'
通过在 .l 开头添加 %option noyywrap 解决问题
3、在命令行输入 a.exe显示无此命令,但是文件的确存在
后来发现因为我打开的是powershell,得输入./a.exe
推荐阅读
-
【学习过程】编译原理 Flex bison
-
YACC工具ParserGenerator的下载和配置过程 博客分类: 编译原理 编译器yaccLALR文法解析C
-
php入门学习知识点二 PHP简单的分页过程与原理_php入门_脚本之家
-
浅谈JVM编译原理->.java文件转变为.class文件的过程
-
c编译器的实现,利用flex实现字符串的识别,利用bison实现ast语法树的构建
-
Vue源码学习之模板编译器原理
-
c编译器的实现,利用flex实现字符串的识别,利用bison实现ast语法树的构建
-
php入门学习知识点二 PHP简单的分页过程与原理
-
Stanford公开课《编译原理》学习笔记(1~4课)
-
JDK之编译过程与编译原理