lisp 关于lisp:文本解析 上一章:缓冲区和文件本章介绍 Elisp 的变量、列表、符号、函数的递归以及一些更便捷的插入点挪动函数。这些常识将围绕一个理论问题的解决过程逐渐开展。问题假如有一份文档 foo.md,内容如下: {代码…} 其中有一部分内容被蕴含在以 \`\`\` 为结尾的两个文本行之间,如何应用 Elisp 编写一个程序,从 foo.md 中辨认它…
lisp 关于lisp:缓冲区和文件 假使将 Elisp 的利用场景固定为文本处理,学习 Elisp,我认为无需像学习其余任何一门编程语言那样亦步亦趋,所以本章间接从文件读写开始动手,通过一些小程序,建设对 Elisp 语言的初步感触。
lisp 关于emacs:走在-Elisp-的歧路上-缓冲区和文件 假使将 Elisp 的利用场景固定为文本处理,学习 Elisp,我认为无需像学习其余任何一门编程语言那样亦步亦趋,所以本章间接从文件读写开始动手,通过一些小程序,建设对 Elisp 语言的初步感触。
无分类 编译return语句 Common Lisp中有一个叫做return的宏,它的作用和平常在C、Java,或者Node.js里面见到的return关键字完全不一样。Common Lisp中的return用于从一个块(block)中返的,而不是从一个函数中返回。用return可以写出下…
无分类 输出HELLO-WORLD如何编译通用的函数调用表达式 首先要处理一下inside-out/aux和inside-out这两个函数。之前的inside-out/aux其实一直不支持对progn的处理,需要先补充;而inside-out则可以优化一下,避免在只有一个表达式的情况下,也用progn将其包裹起来。修…
无分类 调用C标准库的exit函数 在上一篇文章中,实现了对大于号(>)的处理,那么对if表达式的编译也就是信手拈来的事了,不解释太多。在本篇中,将会讲述一下如何产生可以调用来自于C语言标准库的exit(3)函数的汇编代码。
无分类 编译大于运算符 原定的计划中这一篇应当是要讲如何编译if表达式的,但是我发现没什么东西可以作为if的test-form的部分的表达式,所以觉得,要不还是先实现一下比较两个数字这样子的功能吧。说干就干,我决定用大于运算符来作为例…
无分类 insideoutaux如何支持对exit的调用 在上一篇文章中,新增了两个函数:inside-out以及inside-out/aux——曾经想过将inside-out/aux放到前者的函数中用labels来定义,但担心不好调试,所以剥离了出来成为一个独立的函数——inside-out基本上只是驱动了后…
无分类 拆解嵌套的表达式 在上一篇文章中,jjcc2函数已经可以处理加减乘除运算表达式中的变量了。也就是说,现在它可以处理如下的代码了 {代码…} 在我的电脑上,在SLIME中依次运行下面的代码 {代码…} 会得到下列的汇编代码 {代码…} …