摘要: 之前我们了解了PDF文档的基本结构,并且展示了一个简单的hello world。这个hello world 虽然只在页面中显示一个hello world 文字,但是包含的内容却是不少。这次我们仍然以它为切入点,来了解PDF的坐标系统以及坐标变换的相关知识 图形学中二维图形变换 中学我们学习了平面直角 阅读全文
posted @ 2024-06-15 12:49 masimaro 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章我们介绍了一个PDF文档应该包含的最基本的结构,并且手写了一个最简单的 “Hello World” 的PDF文档。后面我们介绍新的PDF标准给出示例时将以这个文档为基础,而不再给出完整的文档示例,小伙伴想自己测试可以根据上一节的文档来进行配置。 对象 上一节我们看到一个个奇奇怪怪的元素,可 阅读全文
posted @ 2024-03-03 16:10 masimaro 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 已经很久没有写博客记录自己学到的一些东西了。但是在过去一年的时间中自己确实又学到了一些东西。一直攒着没有系统化成一篇篇的文章,所以今年的博客打算也是以去年学到的一系列内容为主。通过之前Vim系列教程的启发,我发现还是写一些系列文章对自己的帮助最大。它能最大化自己的学习成果,并强迫自己深入了解一些内容 阅读全文
posted @ 2024-01-28 22:07 masimaro 阅读(454) 评论(0) 推荐(4) 编辑
摘要: 在上一篇文章中,完成了对括号的支持,这样整个程序就可以解析普通的算术表达式了。但是在解析两个括号的过程中发现有大量的地方需要进行索引的回退操作,索引的操作应该保证能得到争取的token,这个步骤应该放在词法分析的阶段,如果在语法分析阶段还要考虑下层词法分析的过程,就显得有些复杂了。而且随着后续支持的 阅读全文
posted @ 2023-04-08 18:41 masimaro 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 在上一篇我们添加了对乘除法的支持,也介绍了BNF范式,并且针对当前的算术表达式写出了对应的范式,同时根据范式给出相应的代码实现。这篇我们将继续为算数表达式添加对括号的支持。 对应的BNF 范式 在上一篇我们给出了乘除法对应的范式 <expr>::=<term>{(PLUS|MINUS)<term>} 阅读全文
posted @ 2023-03-24 17:41 masimaro 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 在上一篇中,我们实现了对减法的支持,并且介绍了语法图。针对简单的语法进行描述,用语法图描述当然是没问题的。但是针对一些复杂的语法进行描述,如果每个部分都通过语法图来描述就显得有些繁琐了。这篇我们先介绍另一种描述语法的方式,并进一步介绍一些关于语法分析的知识。 BNF范式与上下文无关文法 巴科斯范式 阅读全文
posted @ 2023-03-22 16:43 masimaro 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 在上一篇我们实现了一个可以计算两个多位整数加减法的计算器。本章我们继续来给这个计算器添加功能,这次要给它添加可以连续计算多个整数相加减的功能。例如我们可以计算 1 + 2 + 3 这样的表达式。 语法图 在正式写代码之前让我们先来学习一下一些基本的理论知识。这次要介绍的理论是语法图。 什么是语法图呢 阅读全文
posted @ 2023-03-14 17:33 masimaro 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 上一篇我们实现了一个简单的加法计算器,并且了解了基本的词法分析、词法分析器的概念。本篇我们将要对之前实现的加法计算器进行扩展,我们为它添加以下几个功能 计算减法 能自动识别并跳过空白字符 不再局限于单个整数,而是能计算多位整数 提供一些工具函数 首先为了支持减法,我们需要重新定义一下TokenTyp 阅读全文
posted @ 2023-03-08 13:05 masimaro 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 为什么要学习编译器和解释器呢?文中的作者给出的答案有下面几个: 为了深入理解计算机是如何工作的:一个显而易见的道理就是,如果你不懂编译器和解释器是如何工作的那么你就不明白计算机是如何工作的 编译器和解释器用到的一些原理和编程技巧以及算法在其他地方也可以用到。学习编译器和解释器能够学到并强化这些技巧的 阅读全文
posted @ 2023-03-07 11:11 masimaro 阅读(102) 评论(0) 推荐(1) 编辑
摘要: 作为一个程序员,自制自己的编译器一直是一个梦想。之前也曾为了这个梦想学习过类似龙书、虎书这种大部头的书,但是光看理论总有一些云里雾里的感觉。看完只觉得脑袋昏昏沉沉并没有觉得有多少长进。当初看过《疯狂的程序员》这本书,书里说,真正能学会编译原理并不是靠看各种书然后通过相关考试,而是有一天你的领导找到你 阅读全文
posted @ 2023-03-04 11:21 masimaro 阅读(117) 评论(0) 推荐(1) 编辑