MIT/GNU Scheme用户手册(四)

2.4 命令行选项
下面的章节详细介绍Scheme可接受的命令行选项。这些选项可以以任意的顺序出现,但有一定限制,microcode选项必须出现在运行时选项之前,运行时选项必须出现在所有出现在命令行的其他变量(argument)之前。不同于命令行选项,任何变量的出现都会在Scheme启动时产生一个警告信息。若你想定义自己的命令行选项,见第2.5节[自定义命令行选项]P9。
    注意MIT/SCHEME仅仅支持长选项,也就是选项要给出完整名称(短选项仅需指定一个字符)。自7.7.90版本起,为了跟GNU编码标准(和大部分的现代程序)兼容,所有的选项都以双连字号开始。之前的版本命令行选项都是以单连字号开始的。虽然单连字号的样式继续可用,但是已不推荐使用且将来的某天会不能使用。
    下面介绍 microcode的选项
    '--band  filename'
                        指定加载的初始标识图片(world image)文件。文件的搜索路径在工作目录,库目录,使用找到的第一个可读的匹配文件名的文件。若给定的filename是一个绝对路径,则不会进行搜索。若此选项没有给出,则默认为环境变量'MITSCHEME_BAND'的值,若此值也没有定义,则使用'all.com'的值;在这些情况下,仅搜索库目录,工作目录不被搜索。
    '--heap  blocks'
                        指定堆的大小,以1024字为一块(block)。覆盖所有默认值。此值的大小会自动加上加载标识所需的堆空间的大小。也就是,'--heap'指定了Scheme启动时的自由空间大小,除去了标识所需的堆大小。
    '--constant  blocks'
                        指定常空间的大小,以1024字为一块。覆盖所有默认值。常空间用于运行时的编译代码和其他子系统的开销。
    '--stack  blocks'
                        指定栈的大小,以1024字为一块。覆盖所有默认值。此处指Scheme的栈,而不是C程序使用的unix中的栈。
    '--options-summary'
                        使得Scheme在标准错误上输出选项概要。会显示所有可设置的microcode的选项变量的值。
    '--emacs'
                        指定Scheme运行的GNU Emacs子进程。这个选项自动有GNU Emacs提供,在任何情况下都不要给出。
    '--interactive'
                        若此选项没有指定,Scheme的标准输入输出将不是终端,Scheme会把它自己同控制终端分离出来,阻止它从获得的信号发送到那个终端的进程组。若给定了此选项,Scheme就不会从控制终端分离。
                        这个分离的行为在Scheme作为一个后台作业运行时很有用处。例如,使用Bourne脚本时,如下的命令会使得Scheme作为后台作业,重定向其输入输出到文件,并阻止其被键盘中断或登出行为杀死:
                            mit-scheme < /usr/cph/foo.in > /usr/cph/foo.out 2?&1 &
                        在非unix系统中,此选项将被忽略。
    '--nocore'
                        指定Scheme在任何情况下都不要生成信息转储(core dump)。若此选项未给出,且Scheme结束时异常,则会有提示是否要生成一个信息转储。
                        在非unix系统,此选项将被忽略。
    '--library  path'
                        设置库的搜索路径。是一个文件夹列表,用来搜索库文件,比如标识文件(band)。若没有给出此选项,则将使用环境变量MITSCHEME_LIBRARY_PATH的值;若此环境变量也没有给出,则使用默认值。
                        在unix系统中,列表中的元素以冒号(:)分隔,默认值为'/usr/local/lib/mit-scheme- ARCH'。在PC中,则以分号(;)分隔,默认值为'c:\local\mit-scheme'。
    '--fasl  filename'
                        指定为冷加载(cold load),使用指定的文件作为初始化文件加载。若此选项没有给出,则进行正常的加载。此选项不能与'--band'选项一起使用。此选项应该仅用在MIT/GNU Scheme运行系统的维护和开发中。
    下面的选项是 运行时选项。他们在microcode选项和图片文件加载之后被处理。
    '--no-init-file'
                        此选项使得Scheme忽略'${HOME}/.scheme.init'或者'scheme.ini'文件,这些文件在Scheme启动时正常自动加载(若文件存在)。
    '--suspend-file'
                        在某些情况下,Scheme会写出一个'scheme_suspend'文件到用户的主目录。这个文件是一个标识(world image),其中包含了Schenme进程的完整的状态;重新加载此文件时Scheme会继续执行此文件写入时的计算。
                        正常情况下,此文件不会写出,但是此选项会激活此文件的写出功能。
    '--eval  expression ...'
                        此选项使得Scheme去求给定表达式的值,直到(但不包括)下一个参数(argument)出现(以连字号开始)。表达式在用户初始环境(user-initial-environment)下求值。除非显式的处理错误,否则所有错误都将被静默忽略。
    '--load  file ...'
                        此选项使得Scheme加载命令行给出的文件(或文件列表),直到(但不包括)下一个参数出现。文件在用户初始环境下加载。除非显式处理,错误将被静默忽略。
    下面的选项仅仅在加载Edwin时支持。
    '--edit'        此选项使得Edwin随Scheme启动。
2.5 自定义命令行选项
MIT/GNU Scheme提供了定义自己的命令行选项的机制。此机制通过注册处理器(handler)来辨别特殊名称的选项,并在Scheme启动时处理他们。不幸的是,因为此机制的实现方式,你必须定义选项,然后还要保存一个包含你的定义的标识(world image)(见第3.3节[World Image],P20)。当你使用自己的标识启动Scheme时,你的自定义选项就会被识别出来。
    下面的过程定义了命令行的解析器。其中,参数' 关键字(keyword)'定义的命令行选项将可被识别。'关键字'必须是最少有一个字符的字符串;并且不包含前置连字号。
     simple-command-line-parser  keyword thunk [ help]                                            [procedure]
                定义了keyword作为一个简单的命令行选项。当keyword出现在命令行时,转换程序(thunk)将会被执行。help是一个字符串,在--help输出中描述此选项的使用方法。
     argument-command-line-parser  keyword multiple? procedure [ help]                [procedure]
                定义了keyword为一个可以跟一个或多个命令行参数(argument)的命令行选项。过程(procedure)是一个接受一个参数的过程;但keyword出现时,对每个参数都会调用一次。help作为此选项的帮助字符串。在--help选项中输出。若没有给出,会给出一些蹩脚的说明。multiple?,若为真,则关键字后可以跟多于一个的命令行参数。在这种情况下,procedure会对每个在keyword之后的没有前置连字号的参数调用一次。若multiple?是#f,procedure就只调用一次紧跟keyword后面的命令行参数。在此情况下,不管下面的参数是否以连字号起始。
     set-command-line-parser!  keyword procedure                                                        [procedure]
                此低级过程定义了keyword为一个由procedure定义的命令行选项。当keyword出现时,procedure随着所有的命令行参数调用,以keyword开始,作为一个参数列表。procedure必须返回两个值(使用values过程):未使用的命令行参数(作为一个列表),和一个执行此选项行为实现的转换程序(thunk)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值