自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Kevin_qing的专栏

kevin_qing

  • 博客(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 3509

原创 构造使用类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 2404

原创 构造使用类C语言的脚本引擎(3)词法分析

构造使用类C语言的脚本引擎(3)作者 :kevin_qing转贴请注明现在回到编译器上的构造上。编译分为4个步骤1.预处理在这里我只是替换掉源文件的字符/r->/n/0->0x20 (空格)并且在源文件最后加上/02.词法分析.词法分析主要是将输入流分割为一个个的单词,在这里我并未使用flex而是自己实现。(看到正则表达式就晕,更别说叫我写了,而且注视的正则也不好写,还不如自己做比

2005-06-24 11:47:00 2432

原创 构造使用类C语言的脚本引擎(2)实现虚拟机和虚拟机调试

构造使用类C语言的脚本引擎(2)作者 :kevin_qing转贴请注明考虑到脚本编译器部分可以单独作为一个进程实现,并且编译器需要虚拟机对其结果进行调试,目前先从最底层的虚拟机部分开始开发。1.虚拟机结构.考虑到目前不支持内部函数定义,采用寄存器方式,以后扩充栈也较为方便变量寄存器REG[256] 其中REG[0]为外部call时存放返回值指令寄存器IP;比较寄存器CFlag;代码段,数据段均为虚

2005-06-24 11:30:00 3183 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 3072 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除