![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
文章平均质量分 63
yanuas
这个作者很懒,什么都没留下…
展开
-
构建正则引擎的心得(类的设计)
前言之前还写过一个版本的词法分析,但是对类的设计不太满意以及扩展性比较差。所以,又重新设计再写了一份,解决了之前遗留的一些问题。上个版本链接项目地址github涉及内容什么是正则表达式?什么是状态转换图?非确定的有穷状态自动机(NFA)和确定的有穷状态自动机(DFA)的区别如何将正则表达式转换…1. 什么是正则表达式?百度百科2. 什么是状态转换图?3. 非确定的有穷状态自动机(NFA)和确定的有穷状态自动机(DFA)的区别对于NFA的某个状态SSS, 存在输入符号II原创 2020-05-24 22:26:39 · 301 阅读 · 0 评论 -
[编译原理-语法分析(一)] 提取左公因子和消除左递归
前言写起来真是脑壳疼,没有看到有blog详解和代码的,所以又双叒来了!代码400行,注释就有200行(可能是我写过注释占比例最多的一次)。项目地址github后续会更新LL,LR文法,提取左公因子和消除左递归在 src/struct/CFG.java参考链接自顶向下分析方法之表驱动LL(1)分析程序前文在正文之前,先说几个封装的结构,以文法E举例:E→E+T &...原创 2020-02-23 20:25:16 · 8654 阅读 · 0 评论 -
[编译原理-词法分析(三)] 词法分析器
前言前前后后大概用了半个月,从构思到实现,试过语法分析树和抽象语法树,写起来不是特别顺利,然后换了思路,以一种直观的方式进行词法分析(可能时间复杂度较高,没计算过)。项目地址Github参考链接在实现的过程中也发掘到几篇不错的blog构建抽象语法树构建正则引擎正则表达式转有限状态自动机前文支持语法表达式匹配例子c单个非运算字符ca, b, z...原创 2020-02-20 21:47:00 · 1436 阅读 · 0 评论 -
[编译原理-词法分析(二)] 使用状态转换图识别词法单元
前言一个小Demo, 用于分析的源文件比较简单, 主要的部分都有, 扩展比较容易.将正则表达式表示的模式构造为状态转换图. 在本文中只列举状态转换图.双缓冲区(代码中的Buffer类)数字的状态转换保留字和ID的状态转换运算符的状态转换用于分析的源文件结果前情提要一、词素模式二、打印Token三、StateTransition类四、StateTransitio...原创 2020-02-20 19:16:24 · 5852 阅读 · 0 评论 -
[编译原理-词法分析(一)] 输入缓冲 双缓冲区方案
前言在实践中, 通常需要向前看一个字符. 比如, 当读到一个 非字母或数字的字符 时才能确定已经读到一个标识符的结尾. 因此, 这个字符不是id词素的一部分. 采用双缓冲区方案能够安全地处理向前看多个符号的问题. 然后, 将考虑一种改进方案, 使用"哨兵标记"来节约用于检查缓冲区末端的时间. {P72}前情提要一、缓冲区对二、哨兵标记三、实现双缓冲区正文一、缓冲区对描述:...原创 2020-02-20 19:12:53 · 2607 阅读 · 0 评论