导航:首页 > 源码编译 > lisp编译器代码

lisp编译器代码

发布时间:2022-07-01 14:33:23

A. LISP 是什么啊是什么语言啊

LISP(全名LISt Processor,即链表处理语言),由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。 LISP有很多种方言,各个实现中的语言不完全一样。1980年代Guy L. Steele编写了Common Lisp试图进行标准化,这个标准被大多数解释器和编译器所接受。在Unix/Linux系统中,还有一种和Emacs一起的Emacs Lisp(而Emacs正是用Lisp编写的)非常流行,并建立了自己的标准。 LISP的祖先是1950年代Carnegie-Mellon大学的Newell、Shaw、Simon开发的IPL语言。 LISP语言的主要现代版本包括Common Lisp和Scheme。 1 基本介绍 Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如abc;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如: abc () (abc xyz) (a b (c) d) 最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。 正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。 Lisp的7个公理(基本操作符): (quote x)返回x,我们简记为'x (atom x)当x是一个原子或者空表时返回原子t,否则返回空表()。在Lisp中我们习惯用原子t表示真,而用空表()表示假。 > (atom 'a) t > (atom '(a b c)) () > (atom '()) t 现在我们有了第一个需要求出自变量值的操作符,让我们来看看quote操作符的作用——通过引用(quote)一个表,我们避免它被求值。一个未被引用的表达式作为自变量,atom将其视为代码,例如: > (atom (atom 'a)) t 反之一个被引用的表仅仅被视为表 > (atom '(atom 'a)) () 引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了Lisp最为与众不同的特点——代码和数据使用相同的结构来表示,而我们用quote来区分它们。 (eq x y)当x和y的值相同或者同为空表时返回t,否则返回空表() > (eq 'a 'a) t > (eq 'a 'b) () > (eq '() '()) t (car x)要求x是一个表,它返回x中的第一个元素,例如: > (car '(a b)) a (cdr x)同样要求x是一个表,它返回x中除第一个元素之外的所有元素组成的表,例如: > (cdr '(a b c)) (b c) (cons x y)要求y是一个表,它返回一个表,这个表的第一个元素是x,其后是y中的所有元素,例如: > (cons 'a '(b c)) (a b c) > (cons 'a (cons 'b (cons 'c ()))) (a b c) 2 Common LISP的Hello World程序 下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序: (format t "Hello, world!~%") 如果您认为本词条还有待完善,需要补充新内容或修改错误内容,请 编辑词条 参考资料: 1. http://www.supelec.fr/docs/cltl/clm/clm.html 2. http://www.delorie.com/gnu/docs/elisp-manual-21/elisp_toc.html 3. http://www-formal.stanford.e/jmc/frames.html 贡献者(共2名): vanton、柏米 本词条在以下词条中被提及: 程序设计语言、AI、麦卡锡、内存泄露、高级语言、Scheme “LISP”在英汉词典中的解释(来源:网络词典): lisp KK: [] DJ: [] vi. 1. 咬舌 2. 说话口齿不清 vt. 1. 咬着舌说 2. 口齿不清地说 n.[S] 1. 咬舌;口齿不清 2. 咬舌发的字音;口齿不清的字音

B. 如何将LISP源程序编译成fas\vlx格式

1、打开Visual LISP编辑器。

2、点文件/生成应用程序/新建应用程序向导。

3、如文件品种单一,则选简单模式,如用几种类型文件,如LISP,DCL等等,则选择专家模式。

4、按程序要求,选择已有的程序文件所在文件夹,并填写想要的编译后的VLX文件名称如123。

5、最在当出现编译应用程序时,默认为打勾项。此时点击完成按钮,就KO了。

6、打开已有的程序文件所在文件夹,把124.VLX文件找出来,就可以加以应用了。

补充:LISP(全名List Processor,即列表处理语言),由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。

C. LISP代码是什么

LISP(全名LISt Processor,即链表处理语言),由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。

LISP有很多种方言,各个实现中的语言不完全一样。各种LISP方言的长处在于操作符号性的数据和复杂的数据结构。1980年代Guy L. Steele编写了Common Lisp试图进行标准化,这个标准被大多数解释器和编译器所接受。在Unix/Linux系统中,还有一种和Emacs一起的Emacs Lisp(而Emacs正是用Lisp编写的)非常流行,并建立了自己的标准。

LISP的祖先是1950年代Carnegie-Mellon大学的Newell、Shaw、Simon开发的IPL语言。

LISP语言的主要现代版本包括Common Lisp和Scheme。
lisp拥有理论上最高的运算能力

1 基本介绍

Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如abc;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如:

abc
()
(abc xyz)
(a b (c) d)

最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。

正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。

Lisp的7个公理(基本操作符):

(quote x)返回x,我们简记为'x

(atom x)当x是一个原子或者空表时返回原子t,否则返回空表()。在Lisp中我们习惯用原子t表示真,而用空表()表示假。

> (atom 'a)
t
> (atom '(a b c))
()
> (atom '())
t

现在我们有了第一个需要求出自变量值的操作符,让我们来看看quote操作符的作用——通过引用(quote)一个表,我们避免它被求值。一个未被引用的表达式作为自变量,atom将其视为代码,例如:

> (atom (atom 'a))
t

反之一个被引用的表仅仅被视为表

> (atom '(atom 'a))
()

引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了Lisp最为与众不同的特点——代码和数据使用相同的结构来表示,而我们用quote来区分它们。 (eq x y)当x和y的值相同或者同为空表时返回t,否则返回空表()

> (eq 'a 'a)
t
> (eq 'a 'b)
()
> (eq '() '())
t

(car x)要求x是一个表,它返回x中的第一个元素,例如:

> (car '(a b))
a

(cdr x)同样要求x是一个表,它返回x中除第一个元素之外的所有元素组成的表,例如:

> (cdr '(a b c))
(b c)

(cons x y)要求y是一个表,它返回一个表,这个表的第一个元素是x,其后是y中的所有元素,例如:

> (cons 'a '(b c))
(a b c)
> (cons 'a (cons 'b (cons 'c ())))
(a b c)

2 Common LISP的Hello World程序

下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序:

(format t "Hello, world!~%")

D. lisp编程:怎么编译lisp源代码呢

lisp程序不需要编译,直接在autocad中加载就可以了,然后执行定义的命令就行。

E. 如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

打开Visual Lisp编辑器有两种方式:
1.AutoCAD2008及之前的版本,在菜单栏“工具(Tools)"下面,选择”AutoLisp"---->"Visual
Lisp编辑器"。(”AutoLisp"---->"导入应用"这个命令是用来加载AutoLisp脚本的)
2.AutoCAD2009及之后的版本,在功能区的”管理“选项卡里可以直接打开Visual Lisp编辑器。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

打开Visual Lisp编辑器之后新建一个文件,并另存为Lisp源文件。然后就可以在编辑窗口里输你的代码了。

代码编辑并调试确认无错误后,就可以在AutoCAD中使用了。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

左边的按钮表示立即运行当前代码,如果有错误就会提示出来,右边按钮是切换到CAD窗口。

如果不需要再修改代码了还可以将代码进行编译以加速运行。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

根据向导一步步进行编译很简单的。

如果在其他CAD图形文件中需使用当前代码文件或编译后的文件,就按上面第一点的,或者在命令行输入”ap",打开导入应用的对话框。

如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序

1是用来临时导入的,2是将程序加入CAD的启动组。

lisp解决重复性劳动问题

在设计和绘图中,你觉得都是简单粗暴的重复性工作,就可以考虑用AutoLisp来代替你做。

首先,AutoLisp也是一个程序设计语言,属于Common
Lisp的子集,同时加入了很多自定义的函数。即然是一个程序语言,就是其他编程语言能做的,它也能做,只是他的lisp语法跟一般的语言有些差另就是了,但是如果是一个没有VB、C#、C++(对应于AutoCAD的开发方式分别是VBA,.net,ObjectArx)的基础的人来说,AutoLisp是很简单而且特别容易上手的一个语言。

作为一个编程语言,AutoLisp能做的很多:

1、扩充AutoCAD的原有命令。任何带有C:前缀的AutoLisp函数,在AutoCAD中都可以像"line" "circle"
"dim"等命令一样使用。

2、编写代码直接根据国标图库要求来绘出一些常用图库标准件什么的,或是代替人查找各种设计手册中的相关数据并继续使用。

3、进行参数化绘图,对于一些不特别复杂的系统,提供窄范围、大深度的专业设计自动化或者辅助系统,如发动机装配工具设计、纵使机主轴箱设计等。

4、DWG文件本质上是AutoCAD在图形生成和编辑中使用的数据库,可以将一些非图形信息的数据(粗糙度,高度,厚度。。)等存于DWG文件中作
为非图形数据库文件,然后利用Lisp程序进行读取等。

各种AutoCAD二次开发方式的比较:

由于 .net语言和c++的学习曲线比较陡峭,所以简单易学的AutoLisp经常与VBA进行对比。(当然如果有VB的基础还是直接学VBA好了。)

AutoLISP擅长建立新命令和产生已有命令的连接。VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和Access。AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和操作传送信息,然而VBA部件包括数据和对复杂情况的各种有效操作,这就是问题变得复杂的地方。

不过,在AutoCAD2000开始,Autodesk公司就在AutoCAD中加入了Visual
Lisp编辑器,引入了许多新函数扩充AutoLisp的功能,并支持ActiveX对象的访问方式,所以使用AutoLisp来与Word\Excel等程序进行交互也是变简单了。
另外,在创建带GUI图形界面的应用程序上,VBA当然是所见即所得的了,而AutoLisp是通过DCL文件来实现GUI的(语法很简单,但做不到所见即所得).这点是AutoLisp略逊一筹了。原文出自[
CAD自学网 ] 转载请保留原文链接:http://www.cadzxw.com/1873.html

F. 怎么能将Lisp代码编译成EXE文件

为什么要编译成exe文件呢?要让其在所有的windows上都能运行?
【首先】:lisp是脚本语言,所以它是跨平台的,也就是说它不需要被编译成exe文件,就能在所以机器上运行。
【方法】这方法有点笨,但是很好,也适用于想把java转exe苦苦挣扎的人们
方法就是:写一个bat文件
【bat文件的内容】文件名暂定为run.bat
.\clispfolder\clisp programname
PAUSE
【注】
(1)一定要用反斜杠
(2)clispfolder 为你的lisp的解释器的文件夹的名字
(3)clisp 为你的解释器的名字(就是clispfolder中那个exe文件)
(4)programname为你的lisp程序的名字,貌似带不带后缀都可以。
(5)用记事本写完上面两行东东后,将其存为.bat格式
【然后的操作】
随便建一个文件夹,这个文件夹中要放进去三个东东
(1)你的lisp的源代码
(2)你的lisp的完整的解释器,就是讲clispfolder完整的拷贝到这个文件夹即可
(3)刚才写的那个bat文件
【之后】
你就可以带着这个文件夹满世界跑啦,在“所有”的windows中,双击那个bat文件,即可运行你写的lisp啦..................................
【此方法的缺点】
(1)那个clispfolder太大,如果你只是写一个不到1M的lisp的话,那这种方法很臃肿
(2)这种方法貌似不适用于用lisp写windows的@病#毒!
----------------------------------------------------------------
不过这个方法可靠,简单!

G. 请问LISP编程语言的编译器是用什么语言编写的

LISP(全名LISt Processor,即链表处理语言),由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。 ——网络
使一种函数编程语言,曾被用于人工智能,语言都是一些符号,函数,很简单的语言(因此也做不出什么程序来或是很难做出,更别谈人工智能),不需要英语基础。

H. lisp语言的快速入门

Common Lisp语言快速入门: Lisp是软件领域的分裂力量。一方面,Lisp爱好者誓言Lisp比软件领域内的其它语言都更加快捷、整洁和强大;而反对者则辩称,不可靠的执行和库支持不足使得开发者难以在其中编写任何真正的软件。事实上,他们都有各自的道理。
第一版Lisp于大约50年前推出,这使得它和FORTRAN一样,成为现在仍在使用的最古老的编程语言之一。可以证明,它拥有(它们将会拥有)最庞大的特性列表,它也是第一种包括一整套今天我们全都认为是标准语言特性的语言,如垃圾收集、递归、函数作为对象、甚至是普通的if-then-else子句。同时,人们也认为它是一款优秀的教学语言:MIT使用方案、Lisp衍生物,传授它们的介绍性编程类。
我们将一起学习最强大和项目就绪的Lisp版本:Common Lisp,使其正常运行,并了解一些Lisp应用。 代码和数据并无差异——在Lisp中,代码只是一个函数对象列表。源代码和数据源之间不存在区别,允许Lisp把它的内在呈现给编译器、注释器和程序员。这允许你方便地本地读入和评估代码,甚至可以允许你使用宏。
宏——定义和重新定义任何语言元素。不喜欢条件、或循环或函数的运行方式吗?好,你可以定义自己的注释。如果你在代码中多次执行某个特定的任务,把那个特性添加到语言中不是更加方便吗?应用Lisp,你可以实现上述功能。
速度——虽然在许多情况下Common Lisp不如C或OCaml这类速度巨人快捷,但它在一系列测试中表现良好,特别是在执行一小段程序的情况下。了解一些基本的编译器知识,你就能够编写出处理列表和大型数字的代码,在执行速度和内存使用方面都要优于其它语言。
简化——Lisp的一切功能都基于一些基本的理念——一旦你了解那些理念,你就几乎能够处理任何问题。Lisp程序员常常自夸说,仅仅用几百行代码,你就能在几乎任何语言(如C++或Haskell)中执行一个Lisp注释器。
灵活——以你喜欢的任何方式编写代码。更喜欢功能性的编程方法吗?没问题!想要完全反复编程吗?草草写下几个快速的宏就可以完成任务。你可以用最方便最高效的方式编写程序,而且这些程序都能良好地运行。 好,行!我选择了Lisp,我如何进行安装呢?
这是棘手的问题。不像是Python或C#一样,Common Lisp没有标准执行——该语言由一个规范,而不是执行来定义。Common Lisp也没有C语言的特点,及在每一个平台上都是一种支配性的执行或流行的执行。每个版本都应执行上述标准,但有一些细节要由编译器或注释器来处理,这使得每个执行都稍有不同。
你可以使用几种选项——在本文中我使用CLISP,它在Windows、Linux和Mac(仅PPC)上运行良好。如果你使用英特尔Mac,则必须使用其它执行,如Allegro Common Lisp或SBCL。对于这篇快速入门中的简单例子,你使用哪个执行都不要紧。
使用Lispbox可以快速安装Common Lisp系统,但遗憾的是,Lispbox在2012年停止了更新。Lispbox为你提供一个Common Lisp执行、Emacs、SBCL和Slime——Emacs高级Lisp整合模式,许多Lisp程序员会告诉你说,这个组合是使用Lisp的唯一方法。如果你并非Emacs用户(我本人也和你一样),不要担心,它并非必要条件,只是使得编写Common Lisp程序更加简便。而如果想要使用最新的Emacs、SBCL和Slime,网络上也有许多教程关于如何配置它们。
安装过程因平台而异,在Windows中你只能运行安装程序,多数Linux软件包管理器提供安装包等。选择一个执行并遵循安装指令即可。打开Common Lisp (CLisp)交互环境的方式是M-x slime,如果你不理解这是什么意思的话可以通过Ctrl+h松开后按t来学习Emacs的基本操作。但由于Emacs的默认字体不支持中文,所以为了避免教程乱码,点击程序窗口左上角的Options,选择Set Default Font,选择支持中文的字体后保存。打开REPL(交互式提示符)之后再返回这里,我们继续往后讲。 REPL代表“阅读-评估-打印-循环”(Read-Evaluate-Print-Loop),它简单表示注释器的一个交互式提示符。你可以从这里输出一些简单的Lisp代码。如果你使用另一种注释器提示符,你可以在这里使用提示符作为计算器输出一些基本的数学表达式——但它不能正常运行。在CLISP中输入5*2不会返回任何有意义的结果:
> 5 * 2
5
> 5
5
> 2
2
Lisp并非以那种方式运行,运算符,如“+”不是在数字之间,而是在数字前面,就好像它们是函数名称一样。因此,如果你想将REPL当作计算器使用,你必须输入:
> (* 5 2)
10
> (+ 1 2 3 4)
10
> (+ (* 5 2) (* 10 3) (/ 100 4))
65
对你来说,理解这种用法可能更难一些,但它拥有一些优势:它便于编译器解析、它对所有函数和运算符都一样、它让你给函数添加尽可能多的自变量——例如,在上面的第二个例子中,你可以任意扩充加数,使得加法函数和总计函数完全一样。
另外你会注意到,函数名在括号内,而不像许多其它语言一样函数名在括号以外。这表示你要写(函数自变量)而不是函数(自变量)。
每个Lisp表达式会返回一个值,一个函数总是返回最后一个表达式的结果——即使是NIL,NULL在Java或C++中的对等值也是这样。因此在Lisp中显示“Hello World”相当简单:
> Hello World
Hello World
如果你希望在屏幕上打印一些内容,并返回其它内容,你应该使用打印函数:
> (print Hello World)
Hello World
Hello World
这个字符串显示两次,一个是打印结果,一个是函数返回的结果。
Lisp表示LIST Processor(列表处理器),Lisp中的几乎所有内容都以列表的形式存在,因此有时你必须处理列表。定义列表非常容易:
> (list 1 2 3 4 5)
(1 2 3 4 5)
> '(1 2 3 4 5)
(1 2 3 4 5)
第二种定义方法叫做引用,除定义简单的列表外,它还有更多用途,不过我们必须在后面的另一篇文章中讨论那个主题。 Lisp拥有全部标准控制流程方法。定义一个重复一个值的简单循环相当容易:
> (dotimes (i 10) (print i))0
1
2
3
4
5
6
7
8
9
NIL
同样,重复一个列表也很简单:
> (dolist (i '(0 1 2 3 4 5 6 7 8 9)) (print i))
0
1
2
3
4
5
6
7
8
9
NIL
以上两个函数都是DO函数的特殊版本,它就像在其它语言中组合使用while和for函数一样。它由三个部分组成:循环变更定义、终止条件和语句主体:
> (do ((i 0 (+ 1 i))) ((> i 10)) (print i))
0
1
2
3
4
5
6
7
8
9
10
NIL
在这个例子中,变更定义部分为((i 0 (+ 1 i))),它定义变量i为0,并在每次循环时调用函数(+ 1 0)。终止条件为((> i 10)),表示在i大于10时函数终止运行。最后主体部分打印i的值。
Lisp中也有条件函数,最基本的条件函数为if函数:
> (if (> 10 20) (print Hello) (print World))
World
World
if函数由三部分组成:条件、then语句和else语句。如果条件为真,则执行then语句,否则就执行else语句。
你可能已经注意到,到现在为止我们仅使用了单个的语句——但如果你需要把几个语句连接在一起,那该怎么办呢?在Lisp中,要将几个语句连接起来,你需要使用progn这个特殊的控制流程函数:
> (progn (print Hello) (print World))
Hello
World
World
例如,上例允许你在条件函数和循环中使用几个语句。
如果你想要更进一步的了解和学习Common Lisp,可以搭配学习ANSI Common Lisp 和Practical Common Lisp (实用Common Lisp编程),如果你想再更进一步,可以看一看On Lisp 等参考书。

阅读全文

与lisp编译器代码相关的资料

热点内容
云服务器和vms区别 浏览:18
有一本小说主角叫屠夫 浏览:880
微信发送pdf文件 浏览:605
被老婆当鼎炉修炼的小说 浏览:646
php截取最后一位 浏览:377
安卓源码单独编译内核 浏览:446
易语言在线编译 浏览:112
unityandroid游戏开发教程 浏览:94
android去掉虚拟按键 浏览:873
内地激情戏多的电影 浏览:42
更新最快的电视剧电影网 浏览:263
剑三宏设置命令 浏览:245
3C语言编译器 浏览:170
我的世界基岩版怎么加入tis服务器 浏览:390
php论坛模板 浏览:908
找个免费看电影的网站 浏览:372
程序员怎么接手别人遗留的代码 浏览:752
瞬变pdf 浏览:307
php开发仓库管理系统 浏览:688
12米小孩自己看电影 浏览:676