前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编译原理在类Unix/Lunix上使用flex

编译原理在类Unix/Lunix上使用flex

作者头像
里克贝斯
发布2021-05-21 15:06:27
9590
发布2021-05-21 15:06:27
举报
文章被收录于专栏:图灵技术域图灵技术域

flex,前身是lex,lex是1975年由Mike Lesk和当时尚在AT&T实习的Eric Schmidt共同完成的基于UNIX环境的词法分析器的生成工具。这个lex很有名气,但是无奈效率太低加上有bug,让人用的很不爽。后来伯克利实验室的Vern Paxson用C重新写了lex,并命名为flex(Fast Lexical Analyzer Generator)。

下面是使用方法,流程图如上所示

①首先创建一个.l文件,里面写上

代码语言:javascript
复制
%{
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("lines: %8d words: %8d chars: %8d\n", lines, words, chars);
}

②接下来打开终端

输入一下命令:

flex test.l //生成一个就叫做 “lex.yy.c”的文件

③输入以下命令,生成a.out文件来读取输入输出

/* this action would generate a file named a.out which would be used for reading inputs and print outputs */ cc lex.yy.c -ll //参数-ll为mac上运行,如果不好用(Linux上运行),试试参数-lfl

④执行a.out

命令行中输入./a.out

输入一些字符,按下ctrl+D退出。

最后会出现lines、words、chars的个数。

参考资料:https://blog.csdn.net/u013225150/article/details/51241256

http://www.itdaan.com/keywords/Flex+Bison+Using+flex+on+OSX+%E5%9C%A8mac%E4%B8%8A%E4%BD%BF%E7%94%A8Flex.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档