導航:首頁 > 源碼編譯 > 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編譯器代碼相關的資料

熱點內容
游擊隊過索道演算法 瀏覽:160
單片機多功能數字鍾設計 瀏覽:203
我的世界如何進入夢世界伺服器 瀏覽:397
飢荒為什麼老啟動不了伺服器 瀏覽:141
銑床工藝編程 瀏覽:454
七個星期五app怎麼用 瀏覽:688
建行卡app怎麼把錢轉為定期 瀏覽:174
中體彩app怎麼操作呢 瀏覽:962
pdf查看尺寸 瀏覽:972
pop3協議命令 瀏覽:682
獨立重復的演算法 瀏覽:288
編程scratch可以做什麼 瀏覽:415
如家怎麼沒有app了 瀏覽:819
如何刪除emoji文件夾 瀏覽:406
目前主流Python版本是什麼 瀏覽:629
proe復制曲面命令 瀏覽:412
metasploit命令 瀏覽:464
特斯拉新版app怎麼充電 瀏覽:614
學習編程基礎知識大全 瀏覽:766
linuxc語言socket 瀏覽:925