<b>手把手教你写脚本引擎(三)——简单的高级语言(1,基本原理)</b>[VC/C++编程]
本文“<b>手把手教你写脚本引擎(三)——简单的高级语言(1,基本原理)</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
这一篇文章开始报告若何实现一个高级语言的脚本引擎了.由于工程量较为宏大,因此将脱离几篇文章讲.学习做脚本还是要从简单的东西做起的.上一篇文章介绍的号令脚本为实现高级语言的原理做了铺垫.首先,高级语言和初级语言脚本的架构是一致的.其次,为了具有较大的优化的空间,我们将把高级语言转换成初级语言,并配合一个初级语言的脚本引擎来实现高级语言的脚本引擎.当然,习惯上,在这种情形下我们把初级语言叫『指令』.
在这个阶段,我们实现的这门语言是非惰性计算的、弱范例的、仅支持基本范例、数组和函数指针的语言.作为扩大,隐式范例转换和函数重载也将包含在这几篇文章的主题中.好了,开始介绍语法吧.
为了免除解析C语言函数指针声明的一堆麻烦问题,在这里我借用了pascal的语法.我们将构造出一门非常近似pascal的语言出来.
文件构造:
我们将实现的高级语言脚本是支持多文件的.脚本引擎老是需求外部函数的.为了便利的让宿主程序供应外部函数的声明,因此我们做成了多文件的脚本引擎.也便可以有近似C语言#include那模样的东西了.pascal有一个奇特的注释法则:利用大括号注释.
构造以下:
unit 单元名;
uses 单元名1,单元名2,……;
type
新范例名称=范例声明;
……
var
变量名组:范例;
……
interface
公开的函数声明;
implementation
公开和非公开的函数实现(非公开函数不需求声明)
end.
关于语言本身来说,type和uses最好应当属于interface和implementation的.不过我们为了便利,姑且就这么做吧.不然的话,既不能揭露更多的原理,又给自己添麻烦.
范例声明:
范例声明有普通范例、数组范例和函数指针.
普通范例有boolean、integer、real、char和string.
数组范例的声明办法是array of 范例.
函数指针的声明办法跟函数声明一致,唯一的辨别是函数指针不可呈现函数名.比方我们需求一个输入两个整数输出一个整数的函数指针,我们写:
type MyPointer=function(a,b:integer):integer;
以上是“<b>手把手教你写脚本引擎(三)——简单的高级语言(1,基本原理)</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |