MyLang 语言 -- 本身的语言

 

函数和方法是一个东西:算法

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
相关文章
相关标签/搜索