函数和方法是一个东西:算法
function-name($argument-one, $argument-two) $argument.function-name($argument-two)
若是是一个参数:数组
function-name($argument) $arguemnt.function-name
若是在语法中插入代码,会增长语法的复杂度吗?数据结构
如今语法描述中,没有插入代码的空间,括号被 Group 占据,由于键盘符号,只有那么多,好吧,这都不是问题:函数
## grammar rule -> :type Name (type $name)
每次解析到 type Name 的时候,就会动态的添加类型常量,这个数据是解析 my 语法所必须的数据,由于是强类型语言,每一个符号在定义的时候都要声明其类型。spa
(my @buf Buffer) (struct Cursor |name:int len:int|)
因此,应当给表达式预留一个语法空间,好处理相似的问题。其实插入语法的表达式很简单,无非是加入关键字,这些关键字做为数组,是某种数据类型做为 Order 解析代码的组件。code
(push @names $name) (my @names Strs) (say "match new keyword")
语言的语法会一直变化,会变得更简洁,更有可读性:io
关于操做符的优先级, 解析它们须要一个比较复杂的算法,是操做语法树层次的:function
a + b - c * d / e
包声明变量
(ns package)
引用模块module
(use module)
类型定义
(type String)
函数定义
(fn (fn-name args:type) :return-type exprs)
变量声明, 关于多变量同时赋值:在解构一个数据结构时,须要对两个或以上的变量同时赋值,这很常见:
(my $name value) (my [$name $value] (flat value))
变量赋值和变量声明不一样:
$name = $other-name