GS-全新的动态脚本语言V2.0

来源:互联网 发布:vb comdlg32.ocx 编辑:程序博客网 时间:2024/04/30 21:42

GS 全称GScript,前几日刚延生的一门新的动态脚本语言,今日再次更新,

更新内容:

1、解析引擎优化,采用表达式预测,ID预测,性能比之前提升近一倍.

2、引用方式更新,采用"最终实体引用"模式,解决"环形引用"问题

3、语言上增加了关键字:typeof        typecast       sizeof

4、增加了寄存器编程方式(提升性能),寄存器操作关键字:#push #pop ,寄存器名称A-Z,表示方法 #[A-Z]

5、支持预处理指令:#define、#undef、#include



测试效果:

脚本内容:

test1.c

#include <.\test1.h>string fn=getch("请选择使用的函数\x32(注:函数功能一致,但效率不同。)[A]使用C++函数[B]使用脚本函数(普通版)[C]使用脚本函数(寄存器版)输入选项:[ ]\b\b");print("%s\n",fn);switch(fn){case "a":case "A":_tmainA();break;case "b":case "B":_tmainB();break;case "c":case "C":_tmainC();break;default:print("输入错误,将使用缺省值[A]\n");_tmainA();break;}

test1.h

#define printfprint#define BAILOUT 16  #define MAX_ITERATIONS 1000#define double real#define long int  int mandelbrotA(double x, double y)  {      double cr = y - 0.5;      double ci = x;      double zi = 0.0;      double zr = 0.0;      int i = 0;        while(1) {          i ++;          double temp = zr * zi;          double zr2 = zr * zr;          double zi2 = zi * zi;          zr = zr2 - zi2 + cr;          zi = temp + temp + ci;          if (zi2 + zr2 > BAILOUT)              return i;          if (i > MAX_ITERATIONS)              return 0;      }        }  #define cr #A#define ci #B#define zi #C#define zr #D#define i  #E#define temp #F#define zr2  #I#define zi2  #Jint mandelbrotB(real x, real y)  {//#push #A #B #C;    cr = y - 0.5;    ci = x;      zi = 0.0;      zr = 0.0;      i = 0;      while(true){          ++i;          temp = zr * zi;          zr2 = zr * zr;          zi2 = zi * zi;          zr = zr2 - zi2 + cr;          zi = temp + temp + ci;        if (zi2 + zr2 > BAILOUT)              return 1;          if (i > MAX_ITERATIONS)              return 0;      }//#pop #C #B #A;return i<=MAX_ITERATIONS;}#undef cr#undef ci#undef zi#undef zr#undef i#undef temp#undef zr2#undef zi2int _tmainA (){    int old;int now;      old=time();        int x;int y;      for (y = -39; y < 39; y++) {          print("\n");          for (x = -39; x < 39; x++) {              int i = mandelbrot(x/40.0, y/40.0);              if (i)                  print(" ");              else  print("*");                         }         }      print ("\n");            now=time();      real query_time = (now-old)/1000.0;       print ("time %lf", query_time);      return 0;  }int _tmainB (){    int old;int now;      old=time();        int x;int y;      for (y = -39; y < 39; y++) {          print("\n");          for (x = -39; x < 39; x++) {              int i = mandelbrotA(x/40.0, y/40.0);              if (i)                  print(" ");              else  print("*");                         }         }      print ("\n");            now=time();      real query_time = (now-old)/1000.0;       print ("time %lf", query_time);      return 0;  }int _tmainC (){    int old;int now;      old=time();        int x;int y;      for (y = -39; y < 39; y++) {          print("\n");          for (x = -39; x < 39; x++) {              int i = mandelbrotB(x/40.0, y/40.0);              if (i)                  print(" ");              else  print("*");                         }         }      print ("\n");            now=time();      real query_time = (now-old)/1000.0;       print ("time %lf", query_time);      return 0;  }

以上程序内容来互连网上一个很有趣的程序,运行结果很神奇!


测试脚本截图:




原创粉丝点击