tnsdl

1 基本程序结构

 

2.语法

(1)INPUT

     Only use in a state.

(2)SAVE

     Only use in a state.

(3)注释

    两种方法可用。第一种,/**/。缺陷:不能重复包含;第二种,COMMENT ‘*******’。可出现在任何地方,且在使用图形化工具时可以显示。

(4)START

    标志进程开始执行的点

(5)OUTPUT

    发送消息给进程,也可以发送给自己。格式:

      OUTPUT message_name TO  process_name

(6)TASK

    

(7)CALL

    类似于C中的函数调用。可以携带参数。格式:

   CALL   function_name(para list…);

(8)DECISION

      类似于C中的switch…case….语句。格式如下:

      DECISION   value;

      (1):

      (2):

 

      ENDDECISION;

(9)WHILE

    格式:

     WHILE   条件;

             …..;

             …..

     ENDWHILE;

 OUT  用于从WHILE中跳出;

(10)JOIN

    类似于C中的goto。他可以跳转到一个 标志符标志的地方。他的使用有如下限制:不能从一个transition跳转到另一个transition;也不能跳出一个subautomatonprocedureprocess;也不能跳转到一个terminator statement后。

(11)数据类型

bool               有值TF。实现为一个字节

boolean         有值FALSETRUE。这种变量只应该用于和老的系统通信时使用。

byte, word, dword

                          无符号整数。变量长度分别为81632

shortint, integer, longint

                          有符号整数。变量长度分别是81632

real                 32位长的实数类型

3.程序结构

     程序有一系列的层次结构的模块构成。包括:SYS->SYSBLOCK->SERVICEBLOCK->PROGRAMBLOCK。在程序中,这些层次结构的模块的定义只有一个,但实例可以不止一个?

 

SYSTEM book;

ENDSYSTEM book;

 

IMPLEMENTATION tinybook OF SYSTEM book;

            SYSTEMBLOCK booksysb;

ENDIMPLEMENTATION tinybook;

 

 

SYSTEMBLOCK booksysb;

ENDSYSTEMBLOCK booksysb;

 

IMPLEMENTATION book OF SYSTEMBLOCK booksysb;

            SERVICEBLOCK bookserb;

ENDIMPLEMENTATION book;

 

SERVICEBLOCK bookserb;

ENDSERVICEBLOCK bookserb;

 

IMPLEMENTATION bookserb OF SERVICEBLOCK bookserb;

            PROGRAMBLOCK bookprog;

ENDIMPLEMENTATION bookserb;

 

PROGRAMBLOCK bookprog;

ENDPROGRAMBLOCK bookprog;

 

IMPLEMENTATION bookprog OF PROGRAMBLOCK bookprog;

MASTER PROCESS bookmas;

ENDIMPLEMENTATION bookprog;

 

       除了这个结构外,TNSDL还需要一些外部的标准文件帮助才能运行。这些文件类似于C语言里的标准头文件。这些标准文件需要包含在 .sdl的文件前面。而且,这些文件的包含一般是多层关系的,即在用户的sdl文件里可以只包含一个头文件,而在这个头文件里详细列出需要使用的实际头文件;在使用TNSDL转换工具时,工具会首先转换这些头文件并将其展开,然后再转换、连接用户自己的文件。当然,也可以把常用头文件的转换文件保留下来,如此当连接其他的用户文件时可以少一个转换步骤。

 

(1)include文件在编译或转换时的方式?经过试验, 我自定义的文件用include包含,里面定义的数据结构不能使用。

更正:include文件的出现位置很重要。在特定的位置出现,自定义的数据结构可以使用:如果文件includeMASTER PROCESS下,可以,在其外者不可以;在其他的IMPLEMENT中,可以;如果将这些IMPLEMENT单独实现成一个文件,在其中include自定义的文件,则不可以。

 

4 概念

1subautomaton

         process类似,但不能独立process而存在。一个process可能有几个不同的功能,可将每个功能实现为一个subautomaton。一个process可以包含普通的process body,也可以包含由几个subautomaton构成的process body

2)同步服务与异步服务

          同步服务通常实现成函数或procedure,而异步服务实现为一系列的消息交互(协议)。当使用同步服务时,在服务完成前,调用者不能处理其他的事情;而异步服务则没这个限制。

         同步服务实现为procedure时,必须在申明前加上PROCEDURE关键字。

  异步服务声明在SERVICE BLOCK中或更上层 ,同步服务还可以声明在 program block中。

        同步服务还可以被收集到一起形成 一个LIBRARY;例如

LIBRARY lib_name

…………..    服务定义

ENDLIBRARY

形成的库 可以被其他的program使用。

 

3procedure      

          类似于process。他里面也可以有状态机、INPUTOUTPUT等等。他可以被其他procedureprocess或者自己调用,完成特定的功能。他没有自己的消息队列,共享调用者的消息队列。Procedure可以定义在process中,也可以定义在module中。

4hand process的启动

        Hand process需要在master process中用命令显示启动。

            Create HandProcessName(para1,…..,paran)

 (5)指针

     在需要使用指针的时候,可以用符号  @  取对象的地址。

(6)MACRO

    用于声明中,指示此处声明的东东转换为C代码时,应该实现为一个宏。

    而且需要在一个.h文件中中手动实现这个宏,并在调用转化命令时,在命令行中加上 -g file_name.h

                    

5 编译

  

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值