会员
周边
新闻
博问
闪存
赞助商
YouClaw
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
x383494
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
7
8
9
10
···
12
下一页
2024年7月12日
编译实践学习 Part 9
摘要: 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
阅读(195)
评论(0)
推荐(0)
2024年7月6日
编译实践学习 Part8
摘要: 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
阅读(95)
评论(0)
推荐(0)
2024年7月2日
#define int Modint<11>
摘要: 本文为第二届你要魔怔杯鲜花大赛!!!投稿作品。 License: CC BY-NC-SA 4.0 前言 这是一个 \(\bmod \ 11\) 的世界。 假设这个世界与地球类似(不妨称它为 E 球),但是所有的数都是 \(\bmod \ 11\) 意义下的。 在正文和注解部分书写一个十进制数时我会用
阅读全文
posted @ 2024-07-02 21:23 383494
阅读(196)
评论(0)
推荐(0)
编译实践学习 Part7
摘要: 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
阅读(55)
评论(0)
推荐(0)
编译实践学习 Part6
摘要: 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
阅读(79)
评论(0)
推荐(0)
2024年6月23日
编译实践学习 Part5
摘要: License: CC BY-NC-SA 4.0 5.1 本节的 EBNF 中出现了一种新的表示: [ ... ], 这代表方括号内包含的项可被重复 0 次或 1 次. 也就是说, 单个分号在 SysY 程序中也是一个合法的语句. 在 AST 中, 你可以使用空指针或 Option 来表示这种结构.
阅读全文
posted @ 2024-06-23 10:28 383494
阅读(74)
评论(0)
推荐(0)
2024年6月16日
编译实践学习 Part4
摘要: 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
阅读(112)
评论(0)
推荐(0)
2024年4月5日
浮点数比较,但是不用 eps
摘要: License: CC BY-SA 4.0 乘法 把所有数扩大 \(10^n\) 倍然后当成整数做,可能要用到 __int128. (最后输出答案别忘了除回来) 缺点就是除法可能还是会爆精度,并且不支持开根之类的操作。 模法 突发奇想想到的一种方法. 大概思想就是同时记录浮点数和它对某个数取模后的值
阅读全文
posted @ 2024-04-05 14:08 383494
阅读(97)
评论(5)
推荐(2)
2024年3月24日
编译实践学习 Part3
摘要: License: CC BY-SA 4.0 闲话 看了半天文档终于懂了 Bison 里怎么处理带 | 的语法了。 为什么 info 要做成 Emacs 格式啊?Vimer 无能狂怒( Lv 3.1 一元表达式 首先当然是设计 AST 了。 这里我用 std::varient,不知道有没有更优雅的写法
阅读全文
posted @ 2024-03-24 19:38 383494
阅读(240)
评论(0)
推荐(1)
2024年3月16日
编译实践学习 Part2
摘要: 本文以 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
阅读(340)
评论(0)
推荐(1)
上一页
1
2
3
4
5
6
7
8
9
10
···
12
下一页
公告