标签归档:compile

lex与yacc,flex与bison,javacc

在学习网上的文章编写自己的shell解释器的时候,接触到了lex与yacc。顺便了解了下。

Lex(LEXical compiler)和yacc(Yet Another Compiler Compiler)这两个工具是经典的词法分析和语法分析工具,在GNU/Linux下面的Lex是flex(fast lexical analyser generator), 而Yacc则是bison。它们都是基于C语言下面的工具,JAVA下lex和yacc的替代是javacc(Java Compiler Compiler ).

参考IBM网站上的教程 Yacc 与 Lex 快速入门 体验了下:

文件存为 wordCount.lex

执行   flex wordCount.lex  会在当前目录下生成 lex.yy.c

执行   gcc lex.yy.c -lfl -o wordCount 就会编译生成可以执行文件wordCount

可以看到123456这样并没有统计在内,因为wordCount.lex定义的是遇到字母才行数加1.

发现这个博客不错,有个Lex和Yacc从入门到精通 系列。