词法生成器Flex

每一种编程语言都有相应的词法模型(词分为哪些类别,每一种类型的词由哪些字符组成),需要词法分析器对输入的字符串进行解析,拆分为词法元素。Flex是一种词法分析器的自动生成工具,是生成词法模型的元模型,核心是模式匹配,给出以正则表达式方式描述的一系列匹配规则和与该规则匹配后执行的动作,Flex会生成用户指定词法模型的状态机,当输入字符串中的状态与某一条规则匹配时,与规则匹配的动作自动执行。
Flex的输入文件由四部分组成:声明区、辅助定义区、识别规则区、用户子函数区
声明区:以%{开始,以%}结束所包含的区域,内容会直接复制到输出文件的开始
辅助定义区:声明Flex中的宏定义,语法为MACRO_NAME (expression) expression是该宏对应的正则表达式,引用宏的语法为{MACRO_NAME}
识别规则区:以%%开始,以%%结束所包含的区域,每条规则单独占一行,语法为RULE {ACTION} RULE为用正则表达式描述的匹配规则,ACTION是用C/C++描述的匹配动作,会被复制到目标文件的适当位置,当规则匹配时动作被执行
用户子函数区:跟在识别规则区%%结束符的后面,这个区的内容直接复制到输出文件中

posted on 2012-11-15 16:55  应无所住而生其心  阅读(316)  评论(0编辑  收藏  举报

导航