Recommendation ITU-T Z.101 (06/2021) Specification and Description Language – Basic SDL-2010
Summary
History
Keywords
FOREWORD
Table of Contents
1 Scope and objective
     1.1 Objective
     1.2 Application
2 References
3 Definitions
     3.1 Terms defined elsewhere
     3.2 Terms defined in this Recommendation
4 Abbreviations and acronyms
5 Conventions
6 General rules
     6.1 Lexical rules
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
            ::= !
            ::= "
            ::= (
            ::= )
            ::= *
            ::= +
            ::= ,
            ::= -
            ::= .
            ::= /
            ::= :
            ::= ;
            ::= <
            ::= =
            ::= >
            ::= [
           ::= ]
            ::= {
            ::= }
            ::= #
            ::= $
            ::= %
            ::= &
            ::= '
            ::= ?
            ::= @
            ::= \
            ::= ^
            ::= _
            ::= `
            ::= |
            ::= ~
           ::=
           ::=
     6.2 End terminator and comment
           ::=
           ::=
     6.3 Empty clause
     6.4 Solid association symbol
           ::=
     6.5 The metasymbol is followed by and flow line symbols
           ::=
           ::=
     6.6 Names and identifiers, name resolution and visibility
          Identifier :: Qualifier Name
          Qualifier = Path-item*
          Path-item = Package-qualifier
          Package-qualifier :: Package-name
          Agent-type-qualifier :: Agent-type-name
          Agent-qualifier :: Agent-name
          State-type-qualifier :: State-type-name
          State-qualifier :: State-name
          Data-type-qualifier :: Data-type-name
          Procedure-qualifier :: Procedure-name
          Interface-qualifier :: Interface-name
          Package-name = Name
          Agent-type-name = Name
          Agent-name = Name
          State-type-name = Name
          Data-type-name = Name
          Interface-name = Name
          Name :: Token
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
     6.7 Empty clause
     6.8 Informal text
          Informal-text :: ...
           ::=
     6.9 Text symbol
           ::=
     6.10 Frame symbol and page numbers
           ::=
           ::=
           ::=
           ::=
7 Organization of Specification and Description Language specifications
     7.1 Framework
          Sdl-specification :: [ Agent-definition ]
           ::=
           ::=
     7.2 Package
          Package-definition :: Package-name
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
     7.3 Referenced definition
           ::=
           ::=
8 Structural concepts
     8.1 Types, instances and gates
          8.1.1 Structural type definitions
               8.1.1.1 Agent types
                    Agent-type-definition :: Agent-type-name
                    Agent-kind = SYSTEM | BLOCK | PROCESS
                    Agent-type-identifier = Identifier
                    Agent-formal-parameter = Parameter
                    Parameter :: Variable-name
                    Parameter-aggregation :: Aggregation-kind
                    State-machine :: State-name
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
               8.1.1.2 System type
                     ::=
                     ::=
                     ::=
               8.1.1.3 Block type
                     ::=
                     ::=
                     ::=
               8.1.1.4 Process type
                     ::=
                     ::=
                     ::=
               8.1.1.5 Composite state type
                    Composite-state-type-definition :: State-type-name
                    Composite-state-formal-parameter = Agent-formal-parameter
                    Composite-state-type-identifier = Identifier
                     ::=
                     ::=
                     ::=
          8.1.2 Type expression
                ::=
                ::=
          8.1.3 Empty clause
          8.1.4 Gate
               Gate-definition :: Gate-name
               Gate-name = Name
               In-signal-identifier = Signal-identifier
               Out-signal-identifier = Signal-identifier
                ::=
                ::=
                ::=
                ::=
                ::=
     8.2 Type references and operation references
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
9 Agents
     Agent-definition :: Agent-name
     Number-of-instances :: Initial-number [Maximum-number] Lower-bound
     Initial-number = Nat
     Maximum-number = Nat
     Lower-bound = Nat
      ::=
      ::=
      ::=
      ::=
      ::=
      ::=
      ::=
      ::=
      ::=
      ::=
      ::=
      ::=
     9.1 System
           ::=
           ::=
     9.2 Block
           ::=
           ::=
           ::=
     9.3 Process
           ::=
           ::=
           ::=
     9.4 Procedure
          Procedure-definition :: Procedure-name
          Procedure-name = Name
          Procedure-formal-parameter = In-parameter
          In-parameter :: Parameter
          Inout-parameter :: Parameter
          Out-parameter :: Parameter
          Result :: Sort-reference-identifier
          Result-aggregation :: Aggregation-kind
          Procedure-graph ::  [Procedure-start-node]
          Procedure-start-node :: Transition
          Procedure-identifier = Identifier
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
10 Communication
     10.1 Channel
          Channel-definition :: Channel-name
          Channel-path ::  Channel-endpoint
          Originating-gate = Gate-identifier
          Destination-gate = Gate-identifier
          Gate-identifier = Identifier
          Agent-identifier = Identifier
          Channel-name = Name
          Channel-endpoint = Agent-identifier
          State-identifier = Identifier
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
     10.2 Connection
     10.3 Signal
          Signal-definition :: Signal-name
          Signal-parameter :: Aggregation-kind
          Signal-identifier = Identifier
          Signal-name = Name
           ::=
           ::=
           ::=
     10.4 Signal list area
           ::=
           ::=
           ::=
           ::=
11 Behaviour
     11.1 Start
          State-start-node :: Transition
           ::=
           ::=
     11.2 State
          State-node :: State-name
          State-name = Name
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
     11.3 Input
          Input-node :: Signal-identifier [Gate-identifier]
          Variable-identifier = Identifier
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
     11.4 Empty clause
     11.5 Empty clause
     11.6 Empty clause
     11.7 Save
          Save-signalset = Save-item-set
          Save-item = Signal-identifier [Gate-identifier]
           ::=
           ::=
           ::=
           ::=
     11.8 Empty clause
     11.9 Empty clause
     11.10 Label (connector name)
          Free-action :: Connector-name
          Connector-name = Name
           ::=
           ::=
           ::=
     11.11 State machine and composite state
          11.11.1 Composite state graph
               Composite-state-graph :: State-transition-graph
               State-transition-graph :: [State-start-node]
                ::=
                ::=
                ::=
                ::=
          11.11.2 Empty clause
          11.11.3 Empty clause
          11.11.4 Connect
               Connect-node :: Transition
                ::=
                ::=
     11.12 Transition
          11.12.1 Transition body
               Transition :: Graph-node*
               Graph-node :: { Task-node
               Terminator :: { Nextstate-node
                ::=
                ::=
                ::=
                ::=
          11.12.2 Transition terminator
               11.12.2.1 Nextstate
                    Nextstate-node = Dash-nextstate | Named-nextstate
                    Named-nextstate :: State-name
                    Nextstate-parameters :: Actual-parameters
                    Dash-nextstate :: [HISTORY]
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
               11.12.2.2 Join
                    Join-node :: Connector-name
                     ::=
                     ::=
               11.12.2.3 Stop
                    Stop-node :: { }
                     ::=
               11.12.2.4 Return
                    Return-node = Action-return-node
                    Action-return-node :: { }
                    Value-return-node :: Expression
                     ::=
                     ::=
                     ::=
     11.13 Action
          11.13.1 Task
               Task-node = Assignment
                ::=
                ::=
                ::=
          11.13.2 Create
               Create-request-node :: { Agent-identifier | THIS }
                ::=
                ::=
                ::=
          11.13.3 Procedure call
               Call-node ::
               Value-returning-call-node ::
                ::=
                ::=
                ::=
          11.13.4 Output
               Output-node :: { Signal-identifier Actual-parameters }
               Activation-delay = Expression
               Signal-priority = Expression
               Signal-destination :: { Expression | Agent-identifier  | THIS } [ Destination-number ]
               Destination-number = Expression
               Direct-via = Gate-identifier-set
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
          11.13.5 Decision
               Decision-node = Decision-body
               Decision-body :: Decision-question
               Decision-question = Expression
               Decision-answer :: { Range-condition | Informal-text }
               Else-answer :: Transition
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
     11.14 Statement lists
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
     11.15 Timer
          Timer-definition :: Timer-name
          Timer-default-initialization = Constant-expression
          Timer-name = Name
          Set-node :: Time-expression
          Reset-node :: Timer-identifier
          Timer-identifier = Identifier
          Time-expression = Expression
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
           ::=
12 Data
     12.1 Data definitions
          Data-type-definition = Value-data-type-definition
          Value-data-type-definition :: Sort
          Interface-definition :: Sort
          Null-literal-signature = Literal-signature
          Data-type-identifier = Identifier
          Sort-reference-identifier = Sort-identifier
          Sort-identifier = Identifier
          Sort = Name
           ::=
           ::=
           ::=
           ::=
          12.1.1 Data type definition
                ::=
                ::=
                ::=
                ::=
                ::=
          12.1.2 Interface definition
                ::=
                ::=
                ::=
                ::=
          12.1.3 Operation signature
               Static-operation-signature :: Operation-signature
               Operation-signature :: Operation-name
               Operation-name = Name
               Formal-argument :: Argument
               Operation-result :: Sort-reference-identifier
               Argument = Sort-reference-identifier
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
          12.1.4 Generic data type operations
          12.1.5 Pid and pid sorts
          12.1.6 Data type constructors
                ::=
               12.1.6.1 Literals constructor
                    Literal-signature :: Literal-name
                    Literal-natural = Nat
                    Literal-name = Name
                     ::=
                     ::=
                     ::=
                     ::=
               12.1.6.2 Structure data types
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
               12.1.6.3 Choice data types
                     ::=
                     ::=
                     ::=
          12.1.7 Behaviour of operations
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
          12.1.8 Additional data definition constructs
               12.1.8.1 Syntypes
                    Syntype-identifier = Identifier
                    Syntype-definition :: Syntype-name
                    Syntype-name = Name
                    Parent-sort-identifier = Sort-identifier
                     ::=
                     ::=
                     ::=
                     ::=
               12.1.8.2 Constraint
                    Range-condition :: Condition-item-set
                    Condition-item = Open-range | Closed-range | Size-constraint
                    Open-range :: Operation-identifier
                    Closed-range :: Constant-expression
                    Size-constraint :: Operation-identifier
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
     12.2 Use of data
          12.2.1 Expressions and expressions as actual parameters
               Expression = Constant-expression
               Constant-expression :: Literal
               Active-expression :: Variable-access
               Actual-parameters ::  { Expression | UNDEFINED }*
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
                ::=
          12.2.2 Literal
               Literal :: Literal-identifier
               Literal-identifier = Identifier
                ::=
                ::=
          12.2.3 Extended primary
                ::=
                ::=
                ::=
                ::=
                ::=
          12.2.4 Equality expression
               Equality-expression = Positive-equality-expression | Negative-equality-expression
               Positive-equality-expression :: First-operand
               Negative-equality-expression :: First-operand
               First-operand = Expression
               Second-operand = Expression
                ::=
          12.2.5 Conditional expression
               Conditional-expression :: Boolean-expression
               Boolean-expression = Expression
               Consequence-expression = Expression
               Alternative-expression = Expression
                ::=
                ::=
                ::=
          12.2.6 Operation application
               Operation-application :: Operation-identifier
               Operation-identifier = Identifier
                ::=
                ::=
          12.2.7 Range check expression
               Range-check-expression :: Expression Parent-sort-identifier Range-condition
                ::=
                ::=
     12.3 Active use of data
          12.3.1 Variable definition
               Variable-definition :: Variable-name
               Variable-name = Name
               Aggregation-kind = PART
                ::=
                ::=
                ::=
          12.3.2 Variable access
               Variable-access :: Variable-identifier
                ::=
          12.3.3 Assignment
               Assignment :: Variable-identifier
                ::=
                ::=
               12.3.3.1 Extended variable
                     ::=
                     ::=
                     ::=
               12.3.3.2 Default initialization
                    Default-initialization = Constant-expression
                     ::=
          12.3.4 Imperative expression
               Imperative-expression = Now-expression
                ::=
               12.3.4.1 Now expression
                    Now-expression :: { }
                     ::=
               12.3.4.2 Pid expression
                    Pid-expression = Self-expression
                    Self-expression :: { }
                    Parent-expression :: { }
                    Offspring-expression :: { }
                    Sender-expression :: { }
                     ::=
                     ::=
                     ::=
                     ::=
                     ::=
               12.3.4.3 Timer active expression and timer remaining duration
                    Timer-active-expression :: Timer-identifier
                    Timer-remaining-duration ::  Timer-identifier
                     ::=
                     ::=
               12.3.4.4 Active agents expression
                    Active-agents-expression ::  { Agent-identifier | THIS }
                     ::=
          12.3.5 Value returning procedure call
                ::=