女王控的博客

全部

167 篇文章

移动端适配汇总

IOS fix 定位不准 现象 在有输入框的情况下尽量不要用 fixed 定位,用 absolute,否则在 IOS 下会出现很多问题,比如输入法收起时 fixed 定位的元素其实还在未收起的地方,会造成在输入法收起时输入框不能点击 解决方案 当然在用 absolute 的时候,需要注意 body、html 的定位(设置为relative或者不设),放在 body 的下面等等问题 微信下 IOS13 输入法不恢复 现象 在 IOS1… »

编译器之旅(八)——IF语句

需求 现在我们可以比较值了,是时候在我们的语言中添加 IF 语句了,因此让我们看一下 IF 语句的一般语法以及如何将它们转换为汇编语言。 准备 IF 语法 IF 语句的语法为: 通常如何将其转换为汇编语言?事实证明如果相反的比较成立,我们将执行相反的比较并跳转: 其中 L1 和 L2 是汇编语言标签。 在我们的编译器中生成程序集 现在我们输出代码以基于比较来设置寄存器,例如 变成 但是对于 IF 语句,我们需要进行相反的比较: 应该变成: 因此在这一部分中,我已经实现了 IF… »

编译器之旅(七)——比较运算符

需求 接下来我要添加 IF 语句,但是后来我意识到最好先添加一些比较运算符。事实证明这很容易,因为它们像现有的一样是二进制运算符。 因此让我们赶紧看看增加六个比较符有什么变化:==,!=,<,>,<= 和 >=。 核心逻辑 添加新令牌 我们有六个新令牌,所以我们将它们添加到 defs.h… »

编译器之旅(六)——变量

需求 在语言中添加变量,希望能够做到 声明变量 使用变量获取存储的值 分配给变量 这是 input02 输入文件的内容: 最明显的变化是在表达式中具有变量声明,赋值语句和变量名称。但是在开始之前,让我们先看看如何实现变量。 准备 BNF语法 核心逻辑 符号表 每个编译器都需要一个符号表,稍后我们将不仅仅持有全局变量,但现在这是表中的一项的结构(来自 defs.h): 我们在 data.h 中有一个符号数组: Globs 实际上是位于 sym.c 中用于管理符号表的文件,具有以下功能: int… »

编译器之旅(五)——声明语句

需求 在语言中添加一些声明语句: 准备 BNF语法说明 我们已经看到了表达式的 BNF 表示法,现在让我们为以上语句定义 BNF 语法: 输入文件由几个语句组成,它们可以是一个语句,也可以是后面跟有更多语句的语句,每个语句均以关键字开头 print,然后是一个表达式,然后是分号。 核心逻辑 词法扫描器的更改 在编写解析以上语法的代码之前,我们需要在现有代码中添加更多细节,让我们从词法扫描器开始。 为分号添加 print… »

0%