开发自己的编程语言(六)—— First-Class Value

本文介绍Snail Language 0.16版本开始支持First-Class Value,即函数与变量无区别,可相互赋值。同时讲解了实现原理,包括在Value数据结构中支持FUNCTION类型,并在调用时检查变量类型。此外,版本还新增了__FUNCTION__用于表示当前函数名,以及Action函数在return前自动调用的功能。
摘要由CSDN通过智能技术生成

从0.16版本开始,Snail Language语言将函数作为First-Class Value。First-Class Value指的是:函数名和变量名之间没有区别,它们可以相互赋值。要注意的是,print既是函数名又是关键字,所以print可以作为右值,但是不能作为左值。现在一个变量可以表示为:整数、浮点数、字符串、数组、函数。由于是所有的变量都是动态类型,所以赋值时不需要在意当前的类型。

First-Class Value实现原理:

  1. Value是Snail Language中所有类型的数据结构,在Value类型中支持函数类型FUNCTION。
  2. 将函数定义时的函数名放入全局变量中,变量的类型为FUNCTION。
  3. 当调用函数时,查看当前变量的类型是否为FUNCTION。

其他功能:

除了实现First-Class Value,0.16版本还实现了

  1. __FUNCTION__表示当前的函数名。__FUNCTION__是一个全局变量,每次调用函数的时候,将函数名保存到__FUNCTION__中。用途:debug时候可以打印函数log
  2. 每个函数都可以指定一个Action函数,在return之前脚本自动调用。实现过程:当执行return之前,在分析树上插入一个新生成的节点,这个节点表示C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值