上QQ阅读APP看书,第一时间看更新
2.3.1 利用Flex和Bison实现词法和语法分析
在UNIX环境中编写程序,你往往会邂逅神秘的LEX和YACC,而GNU/Linux用户则会邂逅Flex和Bison。
Flex是一个与LEX兼容的词法分析器生成器,可以用它来生成一个新的语言的词法分析器,Flex就是由Vern Paxon实现的一个LEX,使用它既可以节省时间,也可以提高正确性。
Bison是一个与YACC兼容的语法分析器生成器,可以用它来生成一个新的语言的语法分析器,使用它也可以提高正确性并节省开发时间,实际上,Bison是一个可以把符合LALR (1)文法规范的上下文无关文法转换成C语言程序的语法分析器生成器,是一个GNU版本的YACC。
实现一种新语言,需要做的工作主要包括设计文法、进行语法制导的翻译、优化和代码生成,而后续的工作还可以由LLVM的相关工具提供支持。