自己动手写一个简单正则表达式解析器(待续,未完成)
1.状态机及形式语言基础 2. 版本1:仅仅匹配一个? 3. 版本2:如何匹配*? 4. 如何实现*, ?的匹配? 5. 如何实现根据输入的pattern,生成DFA状态机? 1. 状态机及形式语言基础 1.1 语言和文法 在计算机中存在下面两个比较重要的问题,一个问题提出之后,能否使用计算机来执行,如果能够执行的话,那么该怎么执行?这些都是计算模型需要解决的问题,为解决山这些问题,需要来首先了一下什么是形式语言,相对于自然语言而言,如何去描述一个形式语言(文法)? 自然语言就是日常的口头语言,将一个自然语言翻译成另外的一种自然语言的问题引出了“形式语言”的概念。下面就是一个迭代的定义: 1. 字母表V :含有有限元素的非空集合,其中包含终结符号(无法被替换的符号)记为T;非终结符号(简单的将是能够被替换的元素),记为N;定义开始符S为推导的开始。 2. 单词 :定义在字母表V上的单词定义为V中元素组成的有限长度的字串。 3. 空串 :没有符号的串,记为 λ 4. V上所有单词的集合记为V* 5. 指明V*中的串能够被什么样的串替换的表达式称之为“ 产生式” 6. 有了上面的基础开始定义什么是文法: 文法 是由下面的是是部分组成:G = < V, T, S, P >,其中字母表V,有V上的所有的终结符组成的集合T,S为推导的开始符,P为产生式的集合。 7. 下面定义什么是 语言 L