SBCL 从REPL 中提取lisp代码

1, 在emacs C-x C-W 文件另存为保存所有REPL过程

由于 (load "foo.lisp")时只有定义语句可以正确执行, 执行语句不可正确被 (load "foo.lisp")解析执行

所以脚本写成了这个样子, 脚本名 parse_lisp_code.sh

#!/bin/bash
if [ -n "$1" ]; then
   sed ‘s/CL-USER>//‘ $1 | expand -t 8 | egrep ‘^ *\(def|^ {8,}‘ >> "code_${1}"
else
   echo "please input lisp file name"
fi

运行脚本 sh parse_lisp_code.sh cd.lisp

命令解释:

使用sed 删除提示符 CL-USER

lisp定义语句以(def 开头 或是 制表符开头, 如下

CL-USER> (defun dump-db ()$
^I   (dolist (cd *db*)$
^I     (format t "~{~a: ~10t~a~%~}~%" cd)))$

所以使用grep 过滤出每行开始n个空格后加(def或制表符的行,

但是发现grep 不能匹配制表符,

所以使用 expand -t 8 foo > bar 把制表符转化成8个空格

ps

时间: 2024-12-21 20:04:31

SBCL 从REPL 中提取lisp代码的相关文章

提取代码中的部分代码字段

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

ant中提取properties和xml提高代码复用性

本文接着上文对前面的示例进行优化,在前面的build.xml中,有些代码是重复的,我们可以将其抽象出来拿来共同使用,比如将一些路劲提取出来放入properties,可以达到共用的同时,还可以增强程序的可维护性,以后路劲变了只需改配置文件,不用改动build.xml.properties维护简单,以键值对形式存放:而xml不单可以提取属性,还可以提取target. 比如在上文中可以将src1,src2,src3的路劲提取出来,放入properties,以后要是路劲变了,直接更改properties

如何提取HTML代码中img的src地址?

答案:专门的代码 使用专门的正则表达式 /// <summary> /// 获得HTML中所有图片的src地址[比较稳定的一个版本] /// </summary> /// <param name="sHtmlText">HTML代码</param> /// <returns>图片的URL列表</returns> public static string[] GetHtmlImageUrlList(string sH

Common Lisp编程初步---环境搭建和外部lisp代码运行

1 介绍 Lisp是世界上第二古老的语言,第一古老语言是Fortran.Lisp语言的创立者为John McCarthy,一位人工智能领域里的先驱.该语言自创立以来经历了50多年而不衰,是一种很有生命力的语言.该语言的发展和使用与CMU和MIT两所高校密不可分,在相当长的时期内是这两所高校的大学计算机课程指定语言. 在该语言创立之初,除了创建者外,还有其他的一些高校著名学者也参与到了Lisp语言的发展完善当中.于是就出现了多个Lisp的dialect,这对该语言的移植非常不便.为此在1981年丛

在.NET中如何取得代码行数

文章目的 介绍在.NET中取得代码行数的方法 代码 [STAThread] static void Main(string[] args) { ReportError("Yay!"); } static private void ReportError(string Message) { StackFrame CallStack = new StackFrame(1, true); Console.Write("Error: " + Message + "

在.NET中怎样取得代码行数

文章目的 介绍在.NET中取得代码行数的方法 代码 [STAThread] static void Main(string[] args) { ReportError("Yay!"); } static private void ReportError(string Message) { StackFrame CallStack = new StackFrame(1, true); Console.Write("Error: " + Message + "

使用NPOI从Excel中提取图片及图片位置信息

原文:使用NPOI从Excel中提取图片及图片位置信息 问题背景: 话说,在ExcelReport的开发过程中,有一个比较棘手的问题:怎么复制图片呢? 当然,解决这个问题的第一步是:能使用NPOI提取到图片及图片的位置信息.到这里,一切想法都很顺利.但NPOI到底怎么提取图片及图片的位置信息呢?NPOI能不能提取到图片的位置信息呢? 这是两个问题.是两个让BaiGoogleDu几近沉默的问题.但官方教程的评论中还是流露出了答案的蛛丝马迹. 哇咔咔,这是我去看源码寻答案的的动力. 此处省去(N多字

从Android4.0源码中提取的截图实现(在当前activity中有效,不能全局截图)

原文:http://blog.csdn.net/xu_fu/article/details/39268771 从这个大神的博客看到了这篇文章,感觉写的挺好的.挺实用的功能.虽然是从源码中提取的,但是看得出费了一番心思.而且讲解的很透彻.我这里补充的是这个仅仅能在一个acitvity中使用,不能实现在服务中截图.getWindow().getDecorView()这个方法得到的是当前根视图,这样等于得到了当前屏幕展示的图片,截取即可.这里为了方便没有做图片保存的工作.仅仅作为演示. 一.使用方式

从编译器源代码中提取ARMv8的指令编码

2012年11月份的资料,之前ARMv8手冊还没公布,我想办法从编译器的binutils中提取出了全部ARMv8指令的二进制编码,之前不能随便发,如今相当于解禁了^_^. 问题1:提取ARMv8的指令编码 答:ARMv8指令的opcode能够在支持ARMv8的编译器binutils中找到,该工具能在网上找到,见參考资料[1],或者在[1]中搜索aarch64_opcode_table. 为了说明指令编码细节.现将网页中部分内容摘录例如以下: 1208 struct aarch64_opcode