加载中
emacs lisp 研究 lisp.h 继续 (几何画板开发笔记 五)

在前一篇中我们已经研究了结构 Lisp_Object,因为其太重要了,并且本篇要继续研究它, 所以再次列出其结构如下: typedef struct { int i; } Lisp_Object; 然后是对其进行访问的一系列宏及函...

2014/05/11 21:05
75
emacs lisp 研究 lisp.h (几何画板开发笔记 四)

由于想为所做的几何画板(类)和几何推理引入一种驱动语言,近期研究了 lisp 语言, 其中 emacs lisp 方言的实现看起来规模大小适合,我基本选择它作为研究对象,以 期待能引入到几何软件中。...

2014/05/11 19:07
139
在宏中使得字段只能读取 (几何画板开发笔记 三)

问题提出: 在研究 emacs lisp 的时候, 文件 lisp.h 里面有一个宏的写法有点特殊, 引起了我的奇怪. #define XFLOAT_DATA(f) (0 ? XFLOAT (f)->u.data : XFLOAT (f)->u.data) 其中为了简化问题...

C++
2014/05/04 13:20
64
对 volatile 的对象取值和赋值 (几何画板开发笔记 二)

问题提出: 在研究和借鉴 emacs lisp 实现程序时, 有部分值被定义为 volatile 的, 则对其取值和赋值都有些不同, 在 C++ 中. 例子: struct Lisp_Object { int i; }; // 这是 lisp 基本对象结构...

C++
2014/05/03 16:22
207
用模板静态计算出最大公因子 (几何画板开发笔记 一)

问题提出: 在开发 C++ 版几何图形系统中, 需要求出两个数字的最大公因子, 算法用 C 语言可写出为: int gcd (int x, int y) { if (y == 0) return x; else if (x > y) return gcd (y, x % y);...

2014/05/02 12:18
150
Gcc 1.31 考古(三) 表达式 ast 和 rtl 快速概览

在前一篇极其概略地描述了一个简单声明 "int x" 的生成 ast 的过程, 此篇打算 同样概略地描述一个简单表达式 "x+2" 的生成 ast 的大致过程. 因为在表达式 中会使用声明的变量, 以及一些基本的...

2014/01/27 18:48
460
Gcc 1.31 考古(二) 简单声明的解析

"走近gcc" 一文下载地址: http://bbs.chinaunix.net/thread-4096950-1-1.html 我摘录了一小段如下: 一般声明 (学习走近 gcc) int a; int a[10]; int *a; 本文遵守简化原则. gcc 很大, 如果面...

2014/01/27 18:34
126
学习 JFlex 和 BYacc/J 简要笔记

JFlex 是 The Fast Lexical Analyser Generator, 是 lex/flex 的 java 版本, JLex 的升级. 帮助手册地址: http://www.jflex.de/manual.html 中文的一些资料: http://wenku.baidu.com/view/5...

2014/01/01 18:16
754
Lua 4.0 学习 (八) for语句和新的指令格式

Lua 4.0 比起 3.2, 3.1 有了一些改进, 见 HISTORY 文件. 下面对几个关心的摘要: 1. 新的 break 和 for 语句. 语法参考: http://wenku.baidu.com/view/159bc8aad1f34693daef3e70.html for i =...

2013/12/31 10:09
121
编译原理之学习 lua 3.1 (七) Closure 闭包支持

lua 3.1 与其前一个版本 3.0 比, 有了很大的变化, 可参见历史文件 HISTORY. 我们关心的有: 1. 解析由 LR 的变成手写的 LL 递归下降解析器了, 文法变化,代码生成变化了; 2. 新概念: 闭包 (clo...

2013/12/28 18:54
841
编译原理之学习 lua 3.0 (六) tag方法和可变数量参数

自 lua 2.1 之后又发布/发展了 2.2, 2.3, 2.4, 2.5, 到 3.0 版本. 下面简单列出这些版本一些改变的地方: Change since version 2.1 + functions now may be declared with any "lvalue" as a...

2013/12/26 15:08
593
编译原理之学习 lua 2.1 (五) 新增加的 fallback 和 oo 等支持

Lua 1.1 我比较关心的部分叙述得差不多了, 还有些东西可能还要简要的记一下, 免得忘记: 1. lua 1.1 的回收是简单的标记-清扫算法, 当前只有字符串和 array 需要标记和回收. 2. 比起 lua 1.0,...

2013/12/25 09:19
90
编译原理之学习 lua 1.1 笔记 (四) 多变量赋值和函数多返回值

Lua 的多变量赋值是一个有特色的地方, 以下我们简称多赋值, 其就是一次将多个值赋值给多个变量, 变量和值之间使用逗号(,)分隔. 例如: x,y,z = 1,2,3 将值 1,2,3 分别赋予给 x,y,z. 这个例子中...

2013/12/24 12:06
1K
编译原理之学习 lua 1.1 笔记 (三) 表对象 array 及其相关指令

本节研究 lua 1.1 中的表对象, lua 内部称为 array, 底层实现为 hash, 类似于 php 中的 array(), js 中的 {} 对象等. 先列出待研究的问题: 1. lua 对象的一般语法和使用, 示例. 2. 内部的底层...

2013/12/23 10:24
178
编译原理之学习 lua 1.1 笔记 (二) 函数调用与局部变量

函数(过程)是程序中重要的抽象, 过程调用一般用栈实现. Lua 1.1 中尚未实现闭包(closure), 对于函数使用栈实现即已满足需求了. 在理论上, 在栈中要保存为实现调用以及返回调用处的足够 信息,...

2013/12/22 10:45
1K
编译原理之学习 lua 1.1 笔记 (一)

lua 1.1 http://www.lua.org/versions.html#1.1 是在 1994年发布, 去学习研究这么 一个古老的古董其实是一件有趣的事情. 从历史的角度研究一个程序的演变, 是一种有力的 研究方式. 况且早期的...

2013/12/20 16:06
777
网页版几何画板开发笔记(十六) 作图检测说明

(已经过时, 新版的在: http://my.oschina.net/u/232554/blog/368393 ) 作图检测现在分为结果检测和过程检测两种: 结果检测: 判断是否有平行,垂直等最终结果的检测方式, 不区分如何作图出这些...

2013/12/16 14:56
186
网页版几何画板开发笔记(十五) 网络通信功能构思

目标: 一台教师机器(T)上的几何绘图操作能够在另一台学生机器(S)上显示出来. 方法: 建立在 undo/redo 实现技术之上. 模型: 通信模型: 1. T 机器上操作, 编码为 string. 2. T 的操作传递给中间...

2013/12/04 10:05
27
网页画板 Undo Redo 功能的思考

考虑提供一种网络功能, 教师在自己机器上面画图, 能够显示给学生; 或获取学生的图形, 并在其 基础上修改绘制, 学生能看到画图过程. 设学生机器为S, 教师机器为T, 服务器为V. 一般思路: S,T 通...

2013/12/04 09:50
98
网页版几何画板开发笔记(十三) 对象移动算法

问题: 当选中多个几何对象, 使用鼠标移动, 则如何移动, 以保证正确的几何约束关系, 以及 使人"看起来"此移动比较"正常,合理"? 设被选中的对象的集合为S, 先构造一个集合M, 移动S被转换为等价...

2013/12/03 15:52
35

没有更多内容

加载失败,请刷新页面

下一页

返回顶部
顶部