随笔分类 -  从0开始自制解释器

从0开始自制C语言解释器
摘要:在上一篇文章中,完成了对括号的支持,这样整个程序就可以解析普通的算术表达式了。但是在解析两个括号的过程中发现有大量的地方需要进行索引的回退操作,索引的操作应该保证能得到争取的token,这个步骤应该放在词法分析的阶段,如果在语法分析阶段还要考虑下层词法分析的过程,就显得有些复杂了。而且随着后续支持的 阅读全文
posted @ 2023-04-08 18:41 masimaro 阅读(95) 评论(0) 推荐(0) 编辑
摘要:在上一篇我们添加了对乘除法的支持,也介绍了BNF范式,并且针对当前的算术表达式写出了对应的范式,同时根据范式给出相应的代码实现。这篇我们将继续为算数表达式添加对括号的支持。 对应的BNF 范式 在上一篇我们给出了乘除法对应的范式 <expr>::=<term>{(PLUS|MINUS)<term>} 阅读全文
posted @ 2023-03-24 17:41 masimaro 阅读(57) 评论(0) 推荐(0) 编辑
摘要:在上一篇中,我们实现了对减法的支持,并且介绍了语法图。针对简单的语法进行描述,用语法图描述当然是没问题的。但是针对一些复杂的语法进行描述,如果每个部分都通过语法图来描述就显得有些繁琐了。这篇我们先介绍另一种描述语法的方式,并进一步介绍一些关于语法分析的知识。 BNF范式与上下文无关文法 巴科斯范式 阅读全文
posted @ 2023-03-22 16:43 masimaro 阅读(55) 评论(0) 推荐(0) 编辑
摘要:在上一篇我们实现了一个可以计算两个多位整数加减法的计算器。本章我们继续来给这个计算器添加功能,这次要给它添加可以连续计算多个整数相加减的功能。例如我们可以计算 1 + 2 + 3 这样的表达式。 语法图 在正式写代码之前让我们先来学习一下一些基本的理论知识。这次要介绍的理论是语法图。 什么是语法图呢 阅读全文
posted @ 2023-03-14 17:33 masimaro 阅读(84) 评论(0) 推荐(0) 编辑
摘要:上一篇我们实现了一个简单的加法计算器,并且了解了基本的词法分析、词法分析器的概念。本篇我们将要对之前实现的加法计算器进行扩展,我们为它添加以下几个功能 计算减法 能自动识别并跳过空白字符 不再局限于单个整数,而是能计算多位整数 提供一些工具函数 首先为了支持减法,我们需要重新定义一下TokenTyp 阅读全文
posted @ 2023-03-08 13:05 masimaro 阅读(117) 评论(0) 推荐(0) 编辑
摘要:为什么要学习编译器和解释器呢?文中的作者给出的答案有下面几个: 为了深入理解计算机是如何工作的:一个显而易见的道理就是,如果你不懂编译器和解释器是如何工作的那么你就不明白计算机是如何工作的 编译器和解释器用到的一些原理和编程技巧以及算法在其他地方也可以用到。学习编译器和解释器能够学到并强化这些技巧的 阅读全文
posted @ 2023-03-07 11:11 masimaro 阅读(175) 评论(0) 推荐(1) 编辑
摘要:作为一个程序员,自制自己的编译器一直是一个梦想。之前也曾为了这个梦想学习过类似龙书、虎书这种大部头的书,但是光看理论总有一些云里雾里的感觉。看完只觉得脑袋昏昏沉沉并没有觉得有多少长进。当初看过《疯狂的程序员》这本书,书里说,真正能学会编译原理并不是靠看各种书然后通过相关考试,而是有一天你的领导找到你 阅读全文
posted @ 2023-03-04 11:21 masimaro 阅读(255) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示