女王控的博客

全部

230 篇文章

移动端适配汇总

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%