随笔分类 -  编译

摘要:License: CC BY-NC-SA 4.0 lv 9.1 & lv 9.2 内容差不多,就一起写了。 上来就是报了 5 个 shift/reduce conflict,很快啊!我全都没防出去( 但是对于怎么报错的完全没思路,开了 -Wcex 照样看不懂。 怎么会逝呢? 对着代码肉眼查错 阅读全文
posted @ 2024-07-12 10:21 383494 阅读(10) 评论(0) 推荐(0) 编辑
摘要:License: CC BY-NC-SA 4.0 lv 8.1 你可以把全局范围内所有的函数 (包括之后章节中会出现的全局变量) 都放在同一个作用域内, 即全局作用域. 于是我加入了 Koopa_val_global_func. class Koopa_val_global_func : publi 阅读全文
posted @ 2024-07-06 17:01 383494 阅读(18) 评论(0) 推荐(0) 编辑
摘要:License: CC BY-NC-SA 4.0 lv 7.1 没啥难度,照着之前设计 if 的思路走就完了。 lv 7.2 写了几个函数: void enter_sysy_block() { symbol_table.add_table(); } void exit_sysy_block() { 阅读全文
posted @ 2024-07-02 20:24 383494 阅读(8) 评论(0) 推荐(0) 编辑
摘要:License: CC BY-NC-SA 4.0 lv 6.1 这一部分引入了 if/else,于是就有了 shift/reduce conflict. 在符合 EBNF 语法定义的前提下, 我们可以找到不止一种语法的推导 (或规约) 方法. 例如: if(a) if(b) x; else y; 查 阅读全文
posted @ 2024-07-02 15:18 383494 阅读(13) 评论(0) 推荐(0) 编辑
摘要:License: CC BY-NC-SA 4.0 5.1 本节的 EBNF 中出现了一种新的表示: [ ... ], 这代表方括号内包含的项可被重复 0 次或 1 次. 也就是说, 单个分号在 SysY 程序中也是一个合法的语句. 在 AST 中, 你可以使用空指针或 Option 来表示这种结构. 阅读全文
posted @ 2024-06-23 10:28 383494 阅读(11) 评论(0) 推荐(0) 编辑
摘要:License: CC BY-NC-SA 4.0 Lv 4.1 常量 本节的 EBNF 中出现了一种新的表示: { ... }, 这代表花括号内包含的项可被重复 0 次或多次. 在 AST 中, 你可以使用 std::vector/Vec 来表示这种结构. 你说的对,但是感觉不如 std::list 阅读全文
posted @ 2024-06-16 21:35 383494 阅读(13) 评论(0) 推荐(0) 编辑
摘要:License: CC BY-SA 4.0 闲话 看了半天文档终于懂了 Bison 里怎么处理带 | 的语法了。 为什么 info 要做成 Emacs 格式啊?Vimer 无能狂怒( Lv 3.1 一元表达式 首先当然是设计 AST 了。 这里我用 std::varient,不知道有没有更优雅的写法 阅读全文
posted @ 2024-03-24 19:38 383494 阅读(50) 评论(0) 推荐(1) 编辑
摘要:本文以 CC BY-SA 4.0 协议发布。 闲话 重写了 Part1 里因为手滑而删除的 AST。 LunarVim IDE,你值得拥有( 代码传上了 github(推荐 https://mirror.ghproxy.com 加速). Koopa IR 遍历 AST,然后根据 Koopa IR 语 阅读全文
posted @ 2024-03-16 19:52 383494 阅读(41) 评论(0) 推荐(1) 编辑
摘要:本文采用 CC BY 协议发布。 闲话 开新坑辣! 参考 PKU 的文档做的。 为什么会做这个呢?之前看一位退役 OIer 的 Blog 然后发现了这个文档,想着自己退役之后也要做一个。主要是被文档最后的 awesome-sysy 吸引了。 其实之前我在 OI 里也写过 CYaRon!语 的 编译版 阅读全文
posted @ 2024-03-09 21:58 383494 阅读(33) 评论(0) 推荐(1) 编辑

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