`
izuoyan
  • 浏览: 8935565 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

分形专用语言开发完毕

阅读更多

FMF的嵌入式DSL的核心基本上开发完毕了,正如以前所设想的,语言运行的时候是直接在语法树上执行的。流程控制语句只有if/else if/else以及while循环,break和return等。

程序的语法类似javascript,只支持复数类型,输入的浮点数和整数都会被当成复数处理。用关键字var来定义临时变量,一条语句只能定义一个变量,定义变量的时候允许赋值。可以用[real_part_expression, imag_part_expression]来表示一个复数,如[3.2, -6.5]。

支持一元运算符+/-/!,分别表示正/负/取反。如 var kkk = +1*-+--12; 是合法语句,结果是kkk == -12。

支持自反运算,如 k += 2;

允许在表达式中引用另外的自定义函数来进行运算,如:
function func1(arg){return arg * 2;}
function func2(){ return cos(func1(3) + func1(sin(2) + 1));}

编译期会执行一些基本的检查,包括变量、函数有没有定义,函数参数个是否正确等。编译器会告诉出错的行号。

支持递归调用,可以是直接递归,也可以是间接递归调用。如下面这个计算阶乘的函数:
function func2(arg1) {if (arg1<=1)return 1; else return arg1 * func2(arg1 - 1);}
输入参数4进去,得到24。

最后,给这个语言起了个名字:Fractal Specific Language,简称FSL。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics