Rai*_*wig 12
Ant是一个解释用某种XML语言编写的命令的程序.你可以像Justinhj在他的回答中提到的那样使用一些XML解析器(比如上面提到的XMLisp)并在某种Lisp数据中转换XML描述,然后在Lisp中编写额外的代码.您还需要重新实现一些Ant解释.
在Lisp中不需要Ant中的许多原始内容.一些文件操作内置在Lisp中(delete-file,rename-file,probe-file,...).有些缺失并且需要实现 - 您可以使用其中一个现有库.另请注意,您可以将Lisp文件加载到Lisp中并执行代码 - 还有REPL - 因此它已经有了一个交互式前端(与Java不同).
Common Lisp中的高级构建系统通常实现称为" SYSTEM " 的抽象.有几个.ASDF是一个受欢迎的选择,但还有其他选择.系统具有子系统和文件.系统还有一些选择.它的组件也有选择.系统具有组件的结构描述,依赖关系的描述,或"动作"及其依赖关系的类型描述.通常,这些东西以面向对象的方式实现,您可以将"actions"实现为Lisp(泛型)函数.Lisp还带来了COMPILE-FILE等函数,它将使用Lisp编译器编译文件.如果你的代码有C文件 - 你需要调用一个C编译器 - 通常是通过一些允许调用外部程序的特定于实现的函数(这里是C编译器).
作为由梅德-VK提到,ASDF是一种流行的选择.LispWorks提供Common Defsystem.Allegro CL有自己的DEFSYSTEM.它的DEFSYSTEM手册还介绍了如何扩展它.
所有Lisp解决方案都使用某种Lisp语法(不是XML语法),通常由宏实现来描述系统.一旦读入Lisp,它就变成了一个数据表示 - 通常是系统,模块等的CLOS实例.这些动作也是Lisp函数.然后,一些高阶函数遍历组件图/树并执行必要的操作.其他一些工具遍历组件图/树并返回一个动作表示 - 然后是一个提议的计划 - 然后用户可以让Lisp执行整个计划或部分计划.
在Lisp机器上,一个简单的系统描述如下所示:
(sct:defsystem scigraph
(:default-pathname "sys:scigraph;"
:required-systems "DWIM")
(:serial "package" "copy" "dump" "duplicate" "random"
"menu-tools" "basic-classes" "draw" "mouse"
"color" "basic-graph" "graph-mixins" "axis"
"moving-object" "symbol" "graph-data" "legend"
"graph-classes" "present" "annotations" "annotated-graph"
"contour" "equation" "popup-accept" "popup-accept-methods"
"duplicate-methods" "frame" "export" "demo-frame"))
Run Code Online (Sandbox Code Playgroud)
上面定义了一个系统SCIGRAPH,所有文件都应该编译并按顺序加载.
现在我可以看到Lisp Machine将如何更新已编译的代码:
Command: Compile System (a system [default Scigraph]) Scigraph (keywords)
:Simulate (compiling [default Yes]) Yes
The plan for constructing Scigraph version Newest for the Compile
operation is:
Compile RJNXP:>software>scigraph>scigraph>popup-accept-methods.lisp.newest
Load RJNXP:>software>scigraph>scigraph>popup-accept-methods.ibin.newest
它会编译一个文件并加载它 - 我已经加载了软件并且只更改了此文件.
对于ASDF,请参阅CLIKI页面上提到的文档 - 它的工作方式有所不同.
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |