![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
施工中请绕行
喜欢研究底层技术,编译原理,操作系统技术,数据库引擎实现原理。2012年校园招聘进入腾讯北分云平台部,从事终端开发职位。
展开
-
构造可配置词法语法分析器生成器(上)
词法分析器(tokenizer)的作用是按照词法定义规则将输入流分解为token序列,同时记录与每个token匹配的串和出现的位置等信息提供给语法分析器。手工编写一个针对某种语言的词法分析器是比较容易的,事实上很多编译器的词法分析器也是手写的,这种方式的优点是直观容易理解,缺点是开发效率低且易出错。编译技术经过几十年的发展已经形成了一套成熟的理论,应用这些理论可以让我们实现词法分析器的自动构造。在Lex中,每个词法规则由正则表达式定义,我们只需要定义每个token的正则表达式,Lex就可以自动生成对应的分析原创 2014-09-22 09:36:03 · 8337 阅读 · 1 评论 -
构造可配置词法语法分析器生成器(下)
笔者在该文章中实现了一个类似于Lex & Yacc的编译器前端构造工具,该工具基于LALR(1)分析法,支持二义性文法,支持语法制导翻译,支持错误恢复机制,使用它我们可以构造指定词法文法的编译器前端,并且构造的分析器是可重入的。文中最后给出了几个示例,构造四则表达式计算器,JSON解析器和C99标准C编译器前端。原创 2014-09-24 22:40:56 · 4405 阅读 · 4 评论 -
构造可配置词法语法分析器生成器(中)
语法分析器语法分析器(grammar parser)是编译器的核心部分之一,它的作用是检测词法分析器返回的token序列是否符合文法定义的规则。一个完整的语法分析器除了检测语法正确性外还要包含对出错的处理以及错误恢复等功能。原创 2014-09-24 09:21:11 · 5354 阅读 · 0 评论 -
C99标准文法注释
最近业余时间在搞一个针对C语言的语义级别的智能提示插件,用于实现类似于Xcode或VisualStudio等IDE的代码自动补全,实时语义检测等功能,设计目标是兼容C99标准,因此需要分析C99标准文法,下面是笔者对C99标准文法的注释。 C99文法分析 文法入口产生式,用于推导出external_declaration列表translation_unit: externa原创 2015-04-29 14:47:19 · 2147 阅读 · 0 评论