码迷,mamicode.com
首页 > 其他好文 > 详细

读龙书学编译原理 词法分析(2)...

时间:2016-05-05 19:23:12      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

第二种词法分析的方式当然是词法分析器的自动生成器. 如lex, jlex 等等. 那么如何来让生成器知道我们想要生成的Token呢 ?

这就涉及到统一的声明式规范的问题, 换句话讲, 你将按照生成器的形式要求将声明式的规范交给生成器, 那么它就能够对其进行识别. 所以我们只需要完成声明式的规范即可完成词法分析部分, 到最后词法解析器自动生成器就能为我们生成对应的自动机...

技术分享

 

那么如何来给生成器一个统一的声明式的规范呢 ? 先要了解的一个数学工具就是正则表达式, 如图所示, 这是对正则表达式的基本概念...

技术分享

 

那么我们可以尝试着用正则表达式对c语言中的标识符(id) 进行表示 : [a-zA-Z_][a-zA-Z0-9_]*...

 

有了上面这些规范, 那我们可以来看看生成的自动机(其实也就是一段代码)到底是上面样子...从理论上讲, 自动机其实是个数学概念...

M=(Ε,S,q0,F,δ)

  • E:字母表(接受的字母)
  • S:状态集(一共存在多少种状态)
  • q0:初始的状态
  • F:终结状态集(一共有多少种可接受状态)
  • δ :转移函数(每个状态接受什么字符跳转什么状态)

这是一个简单的自动机的例子...

 

技术分享
可以被接受的字符串必须在字符串结束时到达接受状态(两个同心圆的状态,在图中只有状态2是接受状态)

图中所描述的其实是DFA, 状态机里面还有一种叫做NFA

 

技术分享

 

读龙书学编译原理 词法分析(2)...

标签:

原文地址:http://www.cnblogs.com/nzhl/p/5462731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!