鲁班命令行解释器使用说明

 

 

鲁班代码是用鲁班命令行解释器来启动解释执行. 鲁班命令行解释器可以从文件里读鲁班源程序并解释执行. 鲁班命令行解释器也可以接受从操作系统命令行来的短鲁班脚本, 或者接受用户当时打入的鲁班代码立即执行并显示结果.

 

12.1 运行鲁班程序文件

运行鲁班脚本文件很简单, 只需要将脚本文件名放在命令行即可. 鲁班解释器会按它们在命令行的顺序逐个运行. 就如如下举例.

 

在文件 saygood.lbn 里写入如下鲁班代码:

 

            std::println(obj=”World is good”);

 

在文件 saybad.lbn 里写入如下鲁班代码:

 

            std::println(obj=”World is bad”);

 

然后在你的操作系统命令行启动鲁班解释器运行这两个鲁班脚本文件.

 

            Mycomputer > luban saygood.lbn saybad.lbn

     World is good

     World is bad

 

以上例子可以看出怎样运行鲁班脚本文件. 鲁班程序文件除了脚本文件外, 还有鲁班部件定义文件. 鲁班部件定义文件只定义部件, 但没有可立即执行的脚本代码. 部件的运行要由其他的脚本调用. 部件定义文件和脚本文件一样可以放在命令行由鲁班解释器读入并执行. 鲁班解释器会先处理所有的部件定义文件将部件登记到鲁班命名空间, 然后再解释执行脚本文件. 部件定义文件在命令行的顺序可以任意调换而不影响它们的处理. 如下是例子.

在文件 saygood.lbn 里写入如下鲁班代码:

           

            namespace demo;

 

            struct SayGood()

            as process

            {

                        std::println(obj=”World is good”);

            }

在文件 saybad.lbn 里写入如下鲁班代码:

 

            namespace demo;

 

            struct SayBad()

            as process

            {

                        std::println(obj=”World is bad”);

            }

 

在文件 start.lbn 里写入如下鲁班代码:

           

            demo::SayGood(=);

            demo::SayBad(=);

 

然后在你的操作系统命令行启动鲁班解释器运行这三个鲁班文件.

 

            Mycomputer > luban saybad.lbn start.lbn saygood.lbn

     World is good

     World is bad

 

可以看出以上运行结果和上一个例子一样. 但是程序结构不同. 这个例子里有两个鲁班部件定义文件saygood.lbnsaybad.lbn. 这两个文件定义了两个部件 demo::SayGood demo::SayBad. 可真正启动执行这两个鲁班部件的是叫start.lbn的鲁班脚本文件.

从上面命令行的鲁班文件顺序saygood.lbn, start.lbn, saybad.lbn 可以看出一是鲁班部件文件的顺序不是执行顺序, 二是部件文件总是先得处理, 所以脚本文件start.lbn虽然在部件文件saygood.lbn 之前, 它还是能够调用saygood.lbn所定义的部件demo::SayGood.

另外需要指出的是, 在鲁班解释器的命令行, 鲁班部件定义文件的顺序可以任意排列, 不用考虑它们之间的有互相依赖关系. 鲁班解释器会自动处理.

 

12.2 交互式执行鲁班脚本或部件定义程序

打入以下命令会启动鲁班解释器进入交互式状态.

 

            Mycomputer > lubani

6 imported types

script/s - to start scripting

edit/e  - to edit script using $EDITOR or vi

list/l <namespace name> - to browse name space

quit/q - to quit

Luban> _

 

-i参数会让解释器进入交互状态. 在交互状态, 你可以用打入鲁班程序, 查看鲁班名字空间内容或者启动编辑器编辑鲁班程序(BETA1.2或更高). 以下是举例说明.

 

            Mycomputer > lubani

> list std

std::console    std::console

std::deserializer       std::deserializer

std::file       std::file

std::print      std::print(input readwrite obj;)

std::des        std::des(input readwrite string stream;output readonly obj;)

std::printline  std::printline(input readwrite obj;)

std::println    std::printline(input readwrite obj;)

 

以上例子用了”list”命令来查看鲁班名字空间里的’std”子空间的内容. 鲁班解释器列举了所有”std”含有的数据类型和部件类型.

 

            Mycomputer > lubani

> script

std::console().writeline(“Hello, world”);

ESC\ENTER

Hello, world

 

以上例子用了”script”命令来打入鲁班脚本程序并执行. ESC键然后ENTER会让鲁班解释器接受你打入的鲁班脚本程序并执行. 上例的脚本程序简单在屏幕上打印”Hello, world”.

 

            Mycomputer > lubani

> edit

如果你用鲁班BETA1.2或更高, 以上命令会启动一个外部编辑器来编辑鲁班程序并执行. 你可以用环境变量”EDITOR”来指明你想用的外部编辑器. 比如:

 

            Mycomputer > export EDITOR=xemacs

 

如果没有指定的外部编辑器, 鲁班会用”vi”. 如果不能启动外部编辑器, 鲁班会报错. 还有需要指出的是, “edit”功能只在Linux和有Cygwin安装的WINDOWS上使用. 如果你只安装了鲁班的WINDOWS执行文件包没有安装CYGWIN, “edit”功能不工作.

 

12.3 其他命令行参数

-s 参数, 可以用来在命令行直接输入鲁班程序. 如下例:

     Mycomputer > luban –s “std::console().writeline(100);”

     100

如果命令行里有其他鲁班程序文件. -s 参数里的程序会在鲁班程序文件处理后执行.

 

-t 参数, 指定数据类型定义文件名

鲁班软件包有一个鲁班数据类型定义文件”imports”里面含有鲁班的外部数据类型和它们对应的函数库文件名. 如有必要, 你可以用自己的数据类型定义文件, 只需要用-t参数告状鲁班它的名字. 如下例:

     Mycomputer > luban –t myimports