最近在看DSL的东西,对于外部DSL,写一个解释器是必不可少的。我试图归纳一下我学到的,以写一个解释器为目标,讲一下如果来实现一个可用的解释器。一个解释器通常可以分为一下几个阶段:
词法分析(Lexer) 语法分析(Parser, BNF, CFG, AST) 语义分析(AST的处理, annota...
分类:
其他好文 时间:
2014-04-30 00:39:01
阅读次数:
466
1、oop的意义:oop就是代码的重用:分解代码,最小化代码的冗余以及对现存的代码进行定制来编写程序。而不是实地的修改代码,或者从头开始2、继承搜索在那里查找属性:继承搜索会先在实例对象中寻找属性,然后
才是创建实例的类,之后是所有较高的超类,由对象树底端到顶端,并且至右侧。当属性首次找到时,搜索就...
分类:
编程语言 时间:
2014-04-29 22:06:05
阅读次数:
664
在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。
分类:
其他好文 时间:
2014-04-29 20:30:37
阅读次数:
441
目标 1. 清除窗口 2.强制完成所有尚未执行的绘图操作 3.在2d或3d空间绘制图元
4.打开、关闭、查询状态 5.控制图元显示 6.在实心物体表面适当位置指定法线向量 7.用顶点数组和缓冲区对象存储和访问几何数据。
8.同时保存和恢复几个状态变量。1.1 3种基本操作:清除窗口、绘...
分类:
其他好文 时间:
2014-04-29 19:50:32
阅读次数:
543
例1
对于两个或更多的销售员的销售点,计算其中所有销售员的总销售目标值和销售员金额。select
city,sum(QUOTA),sum(SALESREPS.SALES)from OFFICE,SALESREPSgroup by CITYhaving
count(*)>=2例2 (1) 单行in.....
分类:
数据库 时间:
2014-04-29 19:44:29
阅读次数:
505
序列化的作用是什么?为什么要序列化? 1、在进程下次启动时读取上次保存的对象的信息。
2、在不同的应用程序域或进程之间传递数据。 3、在分布式应用程序中的各应用程序之间传输对象。
所为序列化,就是将对象先转换为一种适当格式,然后再将其传输到目标位置的过程。 所为适当格式,有时候需要是二...
分类:
其他好文 时间:
2014-04-29 18:31:32
阅读次数:
501
1、宏定义swap,加括号有什么意义 #define swap(x,y) x =
(x)+(y);y=(x)-(y);x=(x)-(y)
加括号是为了处理表达式参数(即宏的参数可能是个算法表达式)时不出错,因为宏替换就是文本替换,所以如果有以下情况: #define COM(A,B)
(A)*(B)...
分类:
其他好文 时间:
2014-04-29 17:47:29
阅读次数:
585
向量的数量积(内积,点积)向量的向量积(外积,叉积),符合右手规则。,向量积是一个伪向量,定义其方向垂直于进行叉积的两个向量且满足右手规则。向量点积的物理意义W
= |F|·|S|·cosθ ,表示力F所作的功。向量叉积的几何意义 计算矢量叉积是与直线和线段相关算法的核心部分。向量的叉积的模表示这....
分类:
其他好文 时间:
2014-04-29 17:18:37
阅读次数:
456
鼠标触发事件有以下几种鼠标控制光标移动到目标元素上的那一刻,首先触发mouseover之后如果光标继续在元素上移动,则不断触发mousemove如果按下鼠标上的设备(左键,右键,滚轮……),则触发mousedown
当设备弹起的时候触发mouseup目标元素的滚动条发生移动时(滚动滚轮/拖动滚动条。...
分类:
其他好文 时间:
2014-04-29 09:23:47
阅读次数:
329