Lex和Yacc是Unix下不错的词法分析器和语法分析器,在linux下,这两个工具被成为flex和bison,也是C++经常用来构建字符分析程序的工具。
本文不是一篇入门文章,我们假设您已经了解了Lex和Yacc的基本语法
入门文章请参考IBM的:【Yacc 与 Lex 快速入门】
我们这里讨论一些其有趣的用法和注意的事项
字符串的识别
常规的正则式和匹配问题都难不倒大家,那么下面来想一个问题,C语言中字符串如何识别?
我们知道,字符串一般是这样的
"some \"string\" problem.\n"
但我们会发现其中包含有转移符和引号,如何只是简单的如下书写正则式:
\"[^"]*\"
则会导致引号表达能力不全,不能满足C语言的要求。
所以我们考虑将里面的表达部分拆开,