标签:
一、为什么要写这个工具?
公司内容有多个项目需要同一个功能,而这些项目中,有的是用Java的,有的是用C++的,同时由于某些现实条件限制,无法所有项目都调用统一的服务接口(如:可能运行在无网络的情况下),所以可选方案有两种:
a.分别用Java和C++实现两套一样的功能。
b.实现一个生成工具,用来生成同一种逻辑的Java和C++代码。
……
二、本文不会有的内容
我不希望在一篇技术文章中涉及到任何业务,以及为避免任何形式的公司敏感信息的泄露,所以本文中不会出现这个工具中的关键代码,即:
a.这篇文章中的代码都是用于描述方便而写的测试代码,而不会包含真实的项目代码。
b.这篇文章只讲技术,而不涉及业务处理。
三、为什么用Scheme来做为源语言?
首先要说一下,这个源语言是一个Scheme-like的语言,而不是Scheme本身,但语法非常相似。
那么为什么用Scheme的形式来做为源语言呢?直接用Java不就只需要把Java翻译成C++了么?
我选择用Scheme的原因是:
a.这个语言是一个动态类型语言,所以在语法上不会在声明中出现对象的类型。
b.Scheme-like实际上就是lisp-like(S表达式),这种语法形式非常简单,而且各种语言元素上高度统一,非常容易实现。
基于以上两点,以后如果我们再写一个图形工具(给业务方用户直接使用来编辑算法)来生成这个语言也会比较容易——如果要写一个GUI工具编辑好算法之后,生成的直接是Java代码,则有点过于困难了,虽然还是可以做到,但工作量上可能会是10倍,甚至数十倍的差距。所以,为了未来可能的处理方便,以及现在对语言本身的实现方便,这里选用一个在语言上“看似”无类型的,且语法简单的语法来做是比较好的。同时,因这个语言整个就是我在做,所以以后在现在语法的基础之上增加更具表达力的语法也并不会再困难。
四、关于类型
五、表达式与函数
六、关于延时计算
七、关于短路
……
今天有点累了,改天再补完吧。
标签:
原文地址:http://www.cnblogs.com/naturemickey/p/4674924.html