每门语言都有她的风格,像Python用缩进表示语句块,语句行尾不加分号,#开头表示注释,C/C++用花括号表示语句块,程序分表达式与语句,用“//”或“/* */”表示注释等。设计CSE时我面临一个选择,顺从一个已有语言的风格呢?还是自创一种风格,05年那个夏天确实被这个问题纠结了很长时间,后来原型做出来了,经评估才发现这不是问题的关键。
如果顺从C/C++,至少要95%的语法与C/C++相同,这样介绍CSE时要着重介绍5%的内容就可以了,否则,比方80%相同,20%不同,反倒让人更困惑。曾有一位宁波同事,在温州生活多年,怎么也说不好温州话,但他的英语与普通话都说得都很溜,属有点天份的那类,可问题就在这儿,宁波话与温州接近,说温州话老串宁波腔。
我们原型做出来后,评估了一下,只5%语法差异根本不可能构造出一个解释性语言环境,结论明朗了:确定自己的语言风格。但为什么不顺从已有脚本语言的风格呢?比如Python,原因是Python的命令式风格重了点,拿它仿真C语言操作有点困难了,仿真C++语法几乎不可行,即使选它我们也得做不少改造,同样也陷入上面80%与20%的困境。
CSE语言风格是什么呢?学过CSE的已经清楚了,他的内核语法规则非常简单,内核语法也就是CSE作为“编程语言的语言”的描述方法。而CSE的延伸规则依据适配对象不同,比方模拟C、C++、C#,还有仿JavaScript(已纳入开发计划)又能灵活衍化。这里,我们不讲衍化后CSE的表