Secondo 学习教程 02 Secondo的命令

Secondo 学习教程 02 Secondo的命令

命令概述表:

标识符是由正则表达式定义的[ a-z,A-Z ]([ a-z、A-Z ] | [0-9] | _)*所构成的,最大长度为48个字符,例如 lineitem,employee,cities_pop  但是_x_或10times 不正确。

查询

查询命令用于检查实际系统和数据库配置。即使没有数据库,它们也可以被调用。

  • list type constructors
    显示类型构造函数的所有名称连同它们的规范和屏幕上的格式化模式的一个例子。
  • list operators
    几乎和上面一样的命令,但是是有关操作的信息。
  • list algebras
    显示包含所有活动代数模块的名称的列表。
  • list algebra <identifier>
    显示指定代数的类型构造函数和操作符。
  • list databases
    显示所有已知数据库的名称列表。
  • list types
    显示在当前打开的数据库中定义的类型名称的列表。
  • list objects
    显示当前打开的数据库中的对象列表。

数据库命令

  • create database <identifier>
    创建一个新的数据库。数据库名称只能有最多15个字符和大写和小写字母之间是没有区别的。
  • delete database <identifier>
    破坏数据库<标识符>。
  • open database <identifier>
    打开数据库<标识符>。
  • close database
    关闭当前打开的数据库。

 

数据库导入导出

一个完整的数据库可以导出为ASCII文件和从文件加载。类似地,数据库中的单个对象可以保存到文件或从文件中恢复。
一个数据库文件是一个嵌套的列表,有以下四个元素的结构:

 

 

(DATABASE <identifier>
  (TYPES <a sequence of types>)
  (OBJECTS <a sequence of objects>))

所述序列中的每一个都可以是一个空列表。每种类型都是窗体的列表

(TYPE <identifier> (<type expression>))

每个对象都是一个长度为五的列表,下面的结构

(OBJECT <identifier>
  (<type identifier>)
  (<type expression>)
  (<value expression>))

一个对象不需要有一个命名的类型。在这种情况下,第三个元素是一个空列表。存储单个对象的文件只包含一个对象列表。

  • save database to <file>
    将嵌套列表格式的当前打开的数据库的整个内容写入文件<文件>。如果这个文件存在,它将被覆盖,否则将被创建。
  • restore database <identifier> from <file>
    将文件<文件>的内容读取到数据库<标识符>。数据库的以前的内容丢失。如果数据库尚未存在,它将被创建。
  • save <identifier> to <file>
    将对象<标识符>的对象列表写入到文件>文件>。将删除现有文件的内容。
  • restore <identifier> from <file>
    使用“标识符”创建一个新的对象,可能取代以前的定义。对象的类型和值从文件<文件>读取。

基本命令

  • type <identifier> = <type expression>
    为给定类型表达式创建一个名为“标识符”的新类型。
  • delete type <identifier>
    删除用户定义的类型名为<标识符>。
  • create <identifier> : <type expression>
    创建一个称为<类型表达式的类型的对象>。该值仍然是未定义的。
  • update <identifier> := <value expression>
    将右侧的结果值分配给对象<标识符>。
  • let <identifier> = <value expression>
    将结果值分配到一个称为<标识符>的新对象中。对象是不允许存在的;它是由这个命令创建的,它的类型被定义为值表达式的一个。创建和更新的主要优点是类型是自动确定的。
  • derive <identifier> = <value expression>
    这是一个命令的变体,它可以用于构造使用其他对象作为输入的对象,并且没有外部列表表示形式,例如索引。当恢复一个数据库时,这些对象被自动重建。
  • delete <identifier>
    销毁名称为“标识符”的对象。
  • kill <identifier>
    删除名字<标识符>从数据库目录不删除其数据结构对象。一般来说,删除命令应该被用来删除数据库对象,但这个命令可能是有用的,如果删除将崩溃的数据库,由于损坏的持久性数据结构为这个对象。
  • query <value expression>
    评估给定的值表达式,并返回结果对象。如果用户界面为对象的类型提供了没有特殊的显示功能,它将显示为嵌套列表。
  • if <p> then <command> [ else <command> ] endif 
    这是条件命令。< bool值表达>是一个bool类型的值表达式。它是由查询处理器评估。这是唯一可能的,如果一个数据库是当前打开的。如果结果是(true),执行命令1。如果结果是(布尔false),除非可选的else部分是用在这种情况下,执行命令2。如果谓词的评价不返回一个布尔值的定义,完整的命令失败。被执行命令的结果是有条件的命令的结果转发。
  • while <p> do <command> endwhile
    这实现了一个循环结构。只要<值表达式>收益评价(true)(如果数据库是目前开放的评价是可能的,),执行命令。如果表达式的值是(布尔false),循环被终止。对于任何其他结果,循环命令终止与一个错误,但在循环中执行的命令的所有效果仍然有效。该命令的结果是一个列表(resultsequence(<结果> < > * [结果]))与每个结果执行的命令。
  • { <command> [ | <command> ] * ] }
    此结构是序列命令。它由„|分离”命令任意数量(管道封闭在圆paranthesis字符)。命令从左到右执行。当一个命令失败时,执行停止(这个序列中的以下命令被忽略)。该命令的结果是一个列表(resultsequence (<result> [ <result> * ] ))与执行命令的结果。

事件命令

每个Secondo基本命令封装成自己的事务和自动提交。如果要将几个命令放在一个事务中,必须使用以下命令。

  • begin transaction
    启动一个新事务;所有命令,直到下一个提交命令被管理为一个共同的工作单位。
  • commit transaction
    提交一个正在运行的事务;对数据库的所有更改都将是有效的。
  • abort transaction
    中止运行的事务;对数据库的所有更改都将被撤销。
posted @ 2016-10-16 21:27  DemonSword  阅读(469)  评论(0)    收藏  举报