我不確定我是否正確解釋了這個問題,但我很確定我正在尋找一個我可以放入C++程序的LISP解釋器。C++程序中的Lisp解釋器
我想象的理想情況是一個函數或某些東西,我可以傳遞包含LISP代碼的字符串,文件或文件名,然後在其他部分使用LISP代碼的輸出。
把它放在(print (eval (read)))
的方面,我想read
是我輸入的內容,是一個字符串或我可以從打印解析出來的東西。
我不確定我是否正確解釋了這個問題,但我很確定我正在尋找一個我可以放入C++程序的LISP解釋器。C++程序中的Lisp解釋器
我想象的理想情況是一個函數或某些東西,我可以傳遞包含LISP代碼的字符串,文件或文件名,然後在其他部分使用LISP代碼的輸出。
把它放在(print (eval (read)))
的方面,我想read
是我輸入的內容,是一個字符串或我可以從打印解析出來的東西。
還有ECL(「嵌入式的Common Lisp」)。它的優點是它提供了完整的Common Lisp標準。不幸的是,documentation with respect to embedding ......是......有點稀少。
我從來沒有使用過它,所以我不能確切地告訴,這是否真的是一件容易的事情嵌入到您的應用程序。恕我直言,Guile解釋器將是一個合理的選擇。
另一個可嵌入的Lisp是Rep,例如,它是Sawfish窗口管理器使用的擴展語言。它從Emacs lisp clone開始,但隨着時間的推移而變得不同,現在更接近Scheme。
您可以使用GNU Guile,這是一個Scheme解釋器,專門設計爲可輕鬆嵌入到C/C++程序中。
這不是Lisp,但是Guile是GNU跨平臺腳本語言,是Scheme的解釋器/編譯器,與Lisp非常接近。
嘗試任何事情,這個搜索下出現:http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=embedded+lisp
事實證明,很多人都希望做到這一點。
對於比Guile更可嵌入的東西,還有Chibi。
(我< 3狡詐BTW,所以這個答案是不是要採取從遠---它只是提供了另一種選擇。)
如果您對Common Lisp感興趣,有ECL。
從FAQ:
2.1是什麼 「嵌入」 的東西呢?
ECL是一個完整的承諾 執行Common-Lisp 語言。但是,由於其實現方式爲 ,因此可以將 用作您自己的應用程序的擴展性語言 ,非常類似於 Guile適用於Scheme語言。 通過一套非常簡單的功能, 可以解析,編譯和執行 共Lisp的形式,並使用 外部函數接口(FFI),你 可以添加新的功能,共Lisp的 它適合你的域 - 具體的 語言。
和:
2.2如何嵌入到ECL我的應用程序?
您必須使用ECL庫,這是 稱爲libecl.so,libecl.dyld或 ecl.dll,根據您的操作系統 系統(UNIX,Mac OSX版或Windows)上。 程序ecl-config將爲您提供 的標誌,您必須分別使用ecl-config --cflags或 ecl-config --ldflags將標誌傳遞給 C/C++編譯器和連接器 。 關於您的程序,除了鏈接到ECL庫的 之外,您必須調用正確的初始化 例程cl_boot(),以便ECL將 設置爲適當的內部結構。 調用這個程序後,你會 能夠運行Lisp代碼,並創建或 操縱口齒不清的數據
。
關於使用ECL的例子,這裏有一個使用gcc https://gist.github.com/vwood/662109的例子,我把它移植到VS2012 https://github.com/fabriceleal/ecl-win-vs11-example – fableal 2013-06-01 13:33:30