没有合适的资源?快使用搜索试试~ 我知道了~
tinyscript:自制的一个编译器,用于学习,完整实现了词法分析,语法分析,中间代码(SSA)生成,机器码生成,和基于寄存器...
共76个文件
go:65个
ts:6个
makefile:1个
需积分: 50 3 下载量 113 浏览量
2021-01-31
13:42:06
上传
评论
收藏 45KB ZIP 举报
温馨提示
小脚本 整个项目包括三个东西: 创建了一个自己的语言 编译器 虚拟机 golang实现的一个编译器,使用编译一个自己创建的语言(用作玩的),最后写了一个自定义虚拟机使用运行自定义语言。 语言介绍 为了跨平台(其实是为了方便开发^ ^),所以这个语言没有静态编译成硬件指令集,最后的机器码是我自己的定义的,和MIPS类似的(其实就是一个mips子集)虚拟指令集。为了运行这些指令集,我写了一个虚拟机。 语言和golang和javascript类似,实现了函数,类型声明,函数调用等最基本的一些语言元素,没有实现类,结构体,接口等复杂数据结构。 func fact(int n) int { if(n == 0) { return 1 } return fact(n-1) * n } func main() void { return fact(2) } 每个函数都实现了相应的UnitTest,单元测试真香〜 声明: 工程思路不是我自己想出来的,来自于慕课网《大学计算机必修课新讲-编译原理+操作系统+图形学》这个课程。理论主要是看《龙书》的一部分
资源推荐
资源详情
资源评论
收起资源包目录
tinyscript-master.zip (76个子文件)
tinyscript-master
go.mod 76B
main.go 33B
translator
tainstruction_type.go 262B
symbol
table.go 2KB
table_test.go 1KB
util.go 16B
types.go 344B
symbol.go 811B
static_table.go 911B
taprogram.go 1KB
util_test.go 231B
translator.go 7KB
util.go 343B
static_table_test.go 305B
tainstruction.go 1KB
translator_test.go 3KB
go.sum 183B
vm
vm_test.go 4KB
vm.go 4KB
parser
parser_test.go 2KB
parser.go 941B
ast
program.go 348B
stmt_declare.go 692B
scalar.go 261B
func_args.go 451B
stmt_if.go 1KB
type.go 1KB
stmt_assign_test.go 375B
stmt_assign.go 609B
priority_table.go 638B
stmt_declare_test.go 381B
ast.go 2KB
stream_test.go 904B
expr_call.go 530B
factor.go 846B
stmt_if_test.go 1KB
expr.go 3KB
stmt_func_declare.go 1KB
util.go 1KB
stmt_func_declare_test.go 982B
stmt_return.go 457B
stmt_for.go 198B
stream.go 1KB
variable.go 279B
block.go 435B
stmt.go 782B
README.md 1KB
Makefile 21B
gen
instruction.go 5KB
operand
oprand.go 80B
register.go 849B
types.go 112B
label.go 360B
immediate_number.go 358B
offset.go 547B
opcode_gen.go 5KB
opcode_program.go 2KB
opcode_gen_test.go 1KB
opcode_test.go 3KB
types.go 208B
opcode.go 1KB
tests
add.ts 94B
complex-if.ts 115B
fact2.ts 130B
function.ts 44B
recursion.ts 85B
fact5.ts 130B
.gitignore 20B
lexer
keywords.go 244B
alphabet_test.go 472B
alphabet.go 517B
token.go 1KB
lexer.go 7KB
util
stream_test.go 641B
stream.go 1KB
lexer_test.go 4KB
共 76 条
- 1
资源评论
123你走吧你走吧
- 粉丝: 34
- 资源: 4614
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- video_20240425_124410_edit.mp4
- IMG_20240425_120538.jpg
- My Complete Genome_6k Base-Pairs of Phenotype SNPs_Complete Raw Data.zip
- qt 的mqtt测试demo
- 移动应用开发教程-zip.zip
- mosquitto-2.018-install-windows-x64
- FTPServer FTP 服务器,绿色免安装,单文件
- 梦畅语音点名软件,上课点名
- 利用ADNI数据集和标签,在tensorflow框架上使用tensorlayer接口,通过架构u-net实现海马体的分割
- Kutools for Word v9.0 office word 插件
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功