Flex&Bison简介

Flex&Bison简介

什么是Flex、Bison ?

Flex和Bison是用来生成程序的工具,它们所生成的程序能够处理结构化输入。最初Flex和Bison是用来生成编译器的,但后来它们被证明在其他领域也非常有效。

词法分析和语法分析

语法分析工作可以分为两个部分:词法分析(lexical analysis或称scanning)和语法分析(syntax analysis,或称parsing)。
简单来说,词法分析把输入分割成一个个有意义的词块。称为记号(token),而语法分析则确定这些记号是如何彼此关联的。例如,下面这个C代码片段

alpha = beta + gamma;

词法分析器把这段代码分解为这样一些记号:alpha、等号、beta、加号、gamma和分号。接着语法分析器确定了beta+gemma是一个表达式,而这个表达式被赋给了alpha。

正则表达式和词法分析

词法分析通常所做的就是在输入中寻找字符的模式(pattern) 。例如,在C程序中,整型常量是一个或多个数字的字符串,变量名称是一个字母后面跟着零个或者多个字母和数字,而各种各样的操作符则是一个或者成对的字符。一种简洁明了的模式描述方式就是正则表达式(regular expression,常简写为regex或regexp) 。编辑器ed和vi以及搜索程序egrep就使用这种方式来描述其所需要査找的文本。flex程序主要由一系列带有指令的正则表达式组成,这些指令确定了正则表达式匹配后相应的动作(action) 。由flex生成的词法分析器可以读取输入,匹配输入与所有的正则表达式并且执行每次匹配后适当的关联动作。flex会把所有的正则表达式翻译成一种高效的内部格式,这使它几乎可以同时处理所有需要匹配的模式,因此它的速度可以成百倍地提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值