flex是一个词法分析工具(以单词为单位),它能够识别文本中定义的单词pattern。github地址:https://github.com/westes/flex
GNU bison是语法分析工具,常和flex一起使用,来产生语法树。
具体使用方法可参考两篇博客:
driver目录是iverilog的可执行文件的源码。主要功能是接收命令行参数,启动子命令来实现编译。
我们注意到其中有cflexor.lex和cfparse.y两个特殊文件。cflexor.lex是flex的输入文件,定义了命令行参数格式,如+define+、-y、-f等。而cfparse.y是bison的输入文件,类似一个c语言的模板,经过bison处理后,得到完整的parser源码(cfparser.c)。可以从Makefile.in里得到确认:
注:bison与YACC兼容,在YACC基础上做了改进。