用JS了一中文化的JS
趁有假期,用js了一套js的法分析器、法分析器、器、解器,以及一很
的ide,自己了函和包。另外了中文化的法分析器法分析器,了一
我比意的中文程言。
http://code.google.com/p/chn-js/
------------------------------
中文程言格(例方式):
+ - * / ^ & | ~ = 等等
可考:== -> =? 如 1 =? 2 比表式一例改 >? <? <=? <=?(未按此)
量明
元 a = expr
函明
函名(, ) :: [[ 代段 ]]
函名(, ) ::
[[
代段
]]
匿名函
#排序(_(1, 2) :: [[返回 1 - 2;]])
性引用
象#性
象#方法(,)
象直接量
元 o = [[性: 值1, 性2 : 值2, 性3 : 值3]];
元 o = [[
性: 值1,
性2 : 值2,
性3 : 值3
]];
元 o = [[:]];
o#性
直接量
元 o = [[值1,值2,值3]];
下
#[1]
返回句
返回;
返回 1;
返回 [[性: 值, 性2 : 值2, 性3 : 值3]];
出 [[性: 值, 性2 : 值2, 性3 : 值3]];
出 新 ("量 a 未定");
判
如果 a == 1 [[ // 後面必接句,即:不允 if(cond) aa; 必是 if cond {aa;}
dadada
]] 否 [[
dididi
]]
循
如果 a == 1 反[[
dadada
]]
反[[
dadada
]]如果 a == 1;
break
跳出
continue
句:
回收源 :: // js 的 a : 在句 { } 中易象立即值混淆,存在歧
分支
如果 a [[ // 不使用 ==,避免和 == 突
1 :
xxx;
跳出;
2:
yyy;
跳出;
其它:
zzz;
]]
循
令 a = 1; a < 10; a ++ [[
zzz;
]]
所有 a 於 o[[
zzz;
]]
in
於
instanceof
是
try
行[[
xxx;
]] 抓 e [[
yyy;
]] 最 [[
zzz;
]]
-----------------------------------
代:
// ----------------------- 造函 ------------------------
人() :: [[
我#姓名 = '三';
我#年 = 22;
我# = _() :: [[
console#log('大家好,我叫' + 我#姓名 + “,我今年” + 我#年
+'了');
]]
]]
元 三 = 新 人();
三#();
log(三#姓名);
//----------------------- 排序 ----------------------------
元 a = [[4, 6, 7, 2, 1, 3]];
a#sort(_(a, b)::[[
返回 a - b;
]]);
log(a);
// ---------------------- cons ------------------------
cons(a, b) ::[[
返回 _(o) :: [[
如果 o == 1 [[ 返回 a; ]] 否 [[返回 b;]]
]]
]]
car(o) :: [[返回 o(1);]]
cdr(o) :: [[返回 o(2);]]
元 s = cons(7, 8);
log(car(s));
log(cdr(s));
黏合(一, 二) ::[[
返回 _() :: [[
如果 == 1 [[ 返回 一; ]] 否 [[返回 二;]]
]]
]]
取(分子) :: [[返回 分子(1);]]
取尾(分子) :: [[返回 分子(2);]]
元 小 = 黏合(7, 8);
log(取(小));
log(取尾(小));
// ======================
人() :: [[
我#姓名 = '三';
我#年 = 22;
我# = _(urname) :: [[
console#log(urname +',你好,我叫' + 我#姓名 + “,我今年” + 我
#年 +'了');
返回 2;
]]
]]
元 三 = [[:]];
人#apply(三, [[]]);
元 s = 三##call(三, '王三');
元 s = 三##apply(三, [['王三']]);
log(s);
// --------------------------------- prototype & instanceof -------------------
----
人() :: [[
我#姓名 = '三';
]]
人#prototype# = _()::[[
log('你好,我是' + 我#姓名);
]];
男人() :: [[
]]
男人#prototype = 新 人();
男人#prototype# = _() ::[[
log('你好,我是' + 我#姓名 + '先生');
]];
元 a = 新 男人();
log(a 是 男人);
log(a 是 人);
log(a 是 Object);
//------------------------- 包 ------------------------
f(a) :: [[
返回 _()::[[ 返回 a; ]]
]]
元 a1 = f(1);
元 a2 = f(2);
a1() + a2()
//---------------------- --------------------------
// this. 是否被常量化
人() :: [[
我#喜的人 = [[]];
我#姓名 = '三';
]]
元 p1 = 新 人();
元 p2 = 新 人();
p1#姓名 = '李世民';
p1#喜的人#push('程咬金');
log(p2#姓名);
log(p2#喜的人);
-------------------
enjoy it~~