两周自制脚本语言-第7天 添加函数功能
第7天 添加函数功能 基本的函数定义与调用执行、引入闭包使Stone语言可以将变量赋值为函数,或将函数作为参数传递给其他函数 有些函数将有返回值的归为函数,没有返回值的归为子程序 7.1 扩充语法规则 函数定义语句的语法规则 此书将函数定义语句称为def语句。def语句仅能用于最外层代码,用户无法在代码块中定义函数 Stone语言将最后执行语句(表达式)的计算结果将作为函数的返回值返回 代码清单 7.1 与函数相关的语法规则 param : IDENTIFIER params : param { "," param } param_list : "(" [ params ] ")" def : "def" IDENTIFIER param_list block args : expr { "," expr } postfix : "(" [ args ] ")" primary : ( "(" expr ")" | NUMBER | IDENTIFIER | STRING ) { postfix } simple : expr [ args ] program : [ def | statement ] (";" | EOL) 形参param是一种标识符(变量名)。形参序列params至少包含一个param,各个参数之间通过逗号分隔。 param