- 博客(5)
- 收藏
- 关注
原创 构造使用类C语言的脚本引擎(5)语法检查,生成语法树,代码生成。
构造使用类C语言的脚本引擎(5)作者 :kevin_qing转贴请注明语法检查,常量合并和生成语法树是在reduce规约函数中实现语法树节点定义struct GTreeNode{uint32_t type; uint32_t value;};struct GTreeNode1:public GTreeNode{GTreeNode* child1;};struct GTreeNode2:public
2005-06-24 13:14:00 3592
原创 构造使用类C语言的脚本引擎(4)语法分析
构造使用类C语言的脚本引擎(4)作者 :kevin_qing转贴请注明同上一章一样,语法分析部分也不准备使用yacc直接生成代码,而是只使用yacc的生成的分析表。BNF:%token ID IF ELSE SWITCH GOTO RETURN NUMBER STRING MAIN%token ADD_OP MUL_OP ASSIGN_OP CMP_OP LOGIC_OP1 LOGIC_OP2 %
2005-06-24 12:36:00 2443
原创 构造使用类C语言的脚本引擎(3)词法分析
构造使用类C语言的脚本引擎(3)作者 :kevin_qing转贴请注明现在回到编译器上的构造上。编译分为4个步骤1.预处理在这里我只是替换掉源文件的字符/r->/n/0->0x20 (空格)并且在源文件最后加上/02.词法分析.词法分析主要是将输入流分割为一个个的单词,在这里我并未使用flex而是自己实现。(看到正则表达式就晕,更别说叫我写了,而且注视的正则也不好写,还不如自己做比
2005-06-24 11:47:00 2467
原创 构造使用类C语言的脚本引擎(2)实现虚拟机和虚拟机调试
构造使用类C语言的脚本引擎(2)作者 :kevin_qing转贴请注明考虑到脚本编译器部分可以单独作为一个进程实现,并且编译器需要虚拟机对其结果进行调试,目前先从最底层的虚拟机部分开始开发。1.虚拟机结构.考虑到目前不支持内部函数定义,采用寄存器方式,以后扩充栈也较为方便变量寄存器REG[256] 其中REG[0]为外部call时存放返回值指令寄存器IP;比较寄存器CFlag;代码段,数据段均为虚
2005-06-24 11:30:00 3248 3
原创 构造使用类C语言的脚本引擎(1)脚本语法定义
构造使用类C语言的脚本引擎(1)作者 :kevin_qing转贴请注明需求:实现npc逻辑,与游戏(服务器)交互。例如与商人NPC对话打开买卖物品窗口等设计:参考传奇2服务器端脚本后(实现的很烂),定义脚本规则如下:1.采用类C语言,因为熟悉C的人很多,而且C语法较严谨,且使用方便2.数据类型只支持int和const string(用于外部函数的参数或返回值).变量只能为int且不需要显示声明.3
2005-06-24 10:42:00 3125 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人