标签:
第二种词法分析的方式当然是词法分析器的自动生成器. 如lex, jlex 等等. 那么如何来让生成器知道我们想要生成的Token呢 ?
这就涉及到统一的声明式规范的问题, 换句话讲, 你将按照生成器的形式要求将声明式的规范交给生成器, 那么它就能够对其进行识别. 所以我们只需要完成声明式的规范即可完成词法分析部分, 到最后词法解析器自动生成器就能为我们生成对应的自动机...
那么如何来给生成器一个统一的声明式的规范呢 ? 先要了解的一个数学工具就是正则表达式, 如图所示, 这是对正则表达式的基本概念...
那么我们可以尝试着用正则表达式对c语言中的标识符(id) 进行表示 : [a-zA-Z_][a-zA-Z0-9_]*...
有了上面这些规范, 那我们可以来看看生成的自动机(其实也就是一段代码)到底是上面样子...从理论上讲, 自动机其实是个数学概念...
M=(Ε,S,q0,F,δ)
这是一个简单的自动机的例子...
可以被接受的字符串必须在字符串结束时到达接受状态(两个同心圆的状态,在图中只有状态2是接受状态)
图中所描述的其实是DFA, 状态机里面还有一种叫做NFA
标签:
原文地址:http://www.cnblogs.com/nzhl/p/5462731.html