当前位置: 首页 > news >正文

分形专用语言开发完毕

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。

相关文章:

  • Simple SpringMVC Demo
  • 什么时候需要重建索引
  • Spring IOC 官网文档阅读笔记(四)
  • Next
  • mapstruct 简单实践笔记
  • Spring Data JPA 中 @Query 默认不能使用 limit函数
  • 基于Spring 2.0的Web应用设计
  • Spring MVC 官网文档阅读笔记(一)
  • oracle 连接 sqlserver
  • 关于jdk和java规范
  • 工作流入门(基础概念篇)
  • AspectJ 简介
  • 三亚之行
  • redis 学习笔记梳理
  • JavaScripte最经典和权威的教程(对象介绍)
  • css的样式优先级
  • Js基础——数据类型之Null和Undefined
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Mocha测试初探
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Vue2 SSR 的优化之旅
  • Wamp集成环境 添加PHP的新版本
  • 关于List、List?、ListObject的区别
  • 京东美团研发面经
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 如何学习JavaEE,项目又该如何做?
  • 问题之ssh中Host key verification failed的解决
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​io --- 处理流的核心工具​
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (Java数据结构)ArrayList
  • (Python第六天)文件处理
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (八)c52学习之旅-中断实验
  • (动态规划)5. 最长回文子串 java解决
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)Google Chrome调试JS
  • .NET微信公众号开发-2.0创建自定义菜单
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Transient注解