月度归档:2015年01月

Haxe宏函数

Haxe宏方法是一种特殊方法,它的生命周期处于且仅处于编译期。

包含宏的代码编译分三个阶段,首先根据有效代码生成Abstract Syntax Tree,然后找到宏方法并执行(会执行上下文中相关的代码,所以需要将宏方法隔离),最后宏方法变成haxe代码。

在宏方法中,所有对象都是Expr,加macro关键字可以使得表达式不立即执行,而是作为结果代码置入目标位置,该表达式不能直接与任何外部变量交互,类似lisp的',传入的变量必须以Context.makeExpr(x, Context.cur[......]

Read more

Haxe抽象类

haxe中的抽象类是可以被实例化的,它更像一个已有类的包装,用于重载被包装类的赋值、取值、操作符等 例如:

//被包装类为Array<String> @:from对应的方法生成的结果赋值给该类的实例
abstract StringSplitter(Array<String>) {
inline function new(a:Array<String>)
this = a;

@:from static p[......]

Read more

正则与vim

Table of Contents

1. 元字符
2. 限定符
3. 字符集合
4. 分支条件
5. 分组

5.1. 固化分组

6. 反义
7. 后向引用
8. 零宽断言

8.1. 零宽度正预测先行断言
8.2. 零宽度正回顾后发断言

9. 负向零宽断言

9.1. 零宽度负预测先行断言
9.2. 零宽度负回顾后发断言

10. 注释
11. 贪婪与懒惰

11.1. 贪婪匹配
11.2. 懒惰匹配

12. 平衡组/递归匹配

1 元字符

.
匹[......]

Read more

Vim笔记

Table of Contents

1. 辅助记忆
2. 移动

2.1. 字符移动
2.2. 单词移动
2.3. 行间移动
2.4. 滚屏
2.5. 当前屏移动
2.6. 行间移动
2.7. 文本块移动
2.8. 标记移动
2.9. 历史移动

3. 插入
4. 编辑

4.1. 删除

4.1.1. 字符删除
4.1.2. 单词删除
4.1.3. 行删除

4.2. 修改

4.2.1. 字符替换
4.2.2. 单词剪切
4.2.3. 行剪切

4.3. 复制
4.4. 其他技巧[......]

Read more