前面我们学习了Flex和Bison的语法和使用规则,后期我们主要考虑清楚Flex和Bison的应用场景。
分析SQL
大家如果学过数据库的同学,应该对SQL都不陌生,SQL是一种为关系型数据库专门设计的一门语言,通过它我们可以很容易的完成数据库增删改查操作,下面是建表语句
CREATE TABLE Foods(name CHAR(64) NOT NULL, type CHAR(5), flavor CHAR(6), PRIMARY KEY(name));
下面是查询语句, 从食物表中查询类型为水果的名字和口味
SELECT name, flavor FROM Foods WHERE Foods.type = "fruit"
如果在服务器性能测试中发现数据库的某些操作耗时特别严重,出现了性能瓶颈,此时我们可以利用Flex和Bison来优化数据库的事务处理性能,这也是Flex和Bison目前来说最为典型的应用场景
创建模版函数
如果在工作中,需要将某种语言以特定格式转换为另外一种语言,那么我们可以利用Flex和Bison来分析原始语言,生成抽象语法树,再根据抽象语法树来生成目标语言,一个比较生动形象的例子是B站开源的一个项目jni4android,可以根据上层的java代码自动生成对应的JNI操作代码。
大家如果在工作中有需要处理类似的问题,可以考虑使用这两个工具。