编译器
文章平均质量分 95
mxy990811
这个作者很懒,什么都没留下…
展开
-
自制编程语言基于c语言实验记录之七:总结第八章之内建类及方法
1.Bool类及方法//返回核心类name的value结构static Value getCoreClassValue(ObjModule* objModule, const char* name) { int index = getIndexFromSymbolTable(&objModule->moduleVarName, name, strlen(name)); if (index == -1) { char id[MAX_ID_LEN] = {'\0'};原创 2023-11-26 16:02:16 · 644 阅读 · 0 评论 -
自制编程语言基于c语言实验记录之六:总结三四五六七之编译例子manager.sp
var bonusbonus = vbonus = bsalary {compileModule -> (循环执行)compileProgram -> compileClassDefinition具体参考博客类定义。原创 2023-11-14 20:40:08 · 319 阅读 · 0 评论 -
自制编程语言基于c语言实验记录之五:虚拟机
如果外部函数的生命周期结束了,内部函数还需要继续引用外部函数的局部变量,这时的局部变量被称为closed upvalue。函数的局部变量存在函数的frame指向的小运行时栈中,函数内部是可以定义函数的,如果内部函数引用了外部函数的局部变量被称为open upvalue,那么该内部函数对应的线程会保存upvalue队列(objThread->openUpvalues),其中每个upvalue的upvalue->localVarPtr指向外部函数运行时栈中的局部变量。暂时忽略PRIM_METHOD_BIND。原创 2023-11-08 17:25:38 · 314 阅读 · 0 评论 -
自制编程语言基于c语言实验记录之三:总结三四五六七章之编译标识符
compileClassDefinition -> compileClassBody ->compileMethod ->compileBody ->compileBlock->compileProgram->compileStatment->expression-> id.nud方法(由于后面是等于,所以canAssign为True)->matchToken(cu->curParser, TOKEN_ASSIGN)->expression计算"f"即将f加载入栈,原创 2023-09-05 22:48:30 · 301 阅读 · 0 评论 -
自制编程语言基于c语言实验记录之二:总结三四五六七章之编译类定义
/编译类定义= -1) { //目前只支持在模块作用域定义类");");//读入类名//生成类名,用于创建类//生成加载类名的指令if (matchToken(cu->curParser, TOKEN_LESS)) { //类继承//把父类名加载到栈顶} else { //默认加载object类为基类//创建类需要知道域的个数,目前类未定义完,因此域的个数未知,//因此先临时写为255,待类编译完成后再回填属性数。原创 2023-08-25 16:57:35 · 1124 阅读 · 0 评论