词法分析与语法分析的原理及部分实现
词法分析器是用于识别单词所构筑的一个自动识别程序。其本质是词法分析,由一正规文法或是正规表达式推导出不确定的有穷自动机 NFA,再确定化得到确定的有穷自动机 DFA,最后最小化得到一个最简 DFA,输入符号串,识别单词。
语法分析器是在词法分析器的基础上实现识别一符号串是否符合相关文法,其本质是语法分析,而语法分析有两种分析方法:自顶向下与自底向上。自顶向下的代表方法是 LL(1) 分析;自底向上的代表方法是算符优先分析、LR(0) 分析、SLR(1) 分析。
本文的读者包括以下几类:
- 对编译原理有兴趣,想要了解的;
- 想要编写自制编译器的;
本文要求读者具有以下几点基础:
- 了解基本数据结构,例如:栈【因为在语法分析的过程中,使用了分析栈】
- 对文法有基本的了解与认识。
通过本文能够收获以下内容:
- 词法分析的原理描述与实例化完全题解以及词法分析器的简易实现;
- LL(1) 分析法中对 First 集、Follow 集、Select 集的直接解析,带实例化题解;
- 算符优先分析法,这是一种只考虑终结符,不考虑非终结符的分析方法,带实例化题解;
- LR(0) 分析法,讲述活前缀与分析表的创建等一系列的先导知识,再带实例化题解;
- SLR(1) 分析法,相较于 LR(0) 分析,SLR(1) 引入了 Follow 集,带实例化题解。
备注:本文可能会带有不定时更新。
更新方向:LR(1) 分析;LALR(1) 分析;基于算符优先分析的语法分析器快速实现;语义分析。
阅读全文: http://gitbook.cn/gitchat/activity/5dbf7c5ade28920ce58ea34e
您还可以下载 **** 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。