<SIMULATION MODEL>
::= MODEL <ModelName>
[<LABEL_definition>]
[<CONSTANT_definition>]
[<ENTITY_definition>]
[<FUNCTION_definition>]
[<MODEL_specification>]
[<CONTROL_specification>]
[<COMMENT>]
END_MODEL.
<ModelName> ::= <Identifier>
<LABEL_definition> ::= LABEL <LabelName>
<CONSTANT_definition> ::= CONST <ConstantName> = <Value>
<ENTITY_definition>
::= ENT <EntityName> : <EntityType>
<EntityType>
::= <SimpleType> | <ArrayType>
<SimpleType>
::= LOGIC| VAR | FACILITY | STORAGE | QUEUE | TABLE| CHAIN
<ArrayType>
::= ARRAY <Dimension> OF <BasicType>
<BasicType>
::= LOGIC | VAR
<FUNCTION_definition> ::= FUNCTION <FunctionName>[(<ListOfParametrers>)] := <ArithmeticExpression>
<MODEL_specification>
::= MOD_BEGIN
{<Statement_mod>}
MOD_END;
<Statement_mod>
::= [<Label> : ] <CompoundStatement> | [<Label>
: ] <SimpleStatement>
<CompoundStatement>
::= BEGIN {<SimpleStatement>} END;
<SimpleStatement>
::= <BlockStatement> |<BranchStatement> |
<AssignStatement>| <I/O_Statement>
<BlockStatement>
::= <ADVANCE> | <DEPART> | <ENTER> |
<GENERATE> | <GATHER> | <LEAVE> |
<LINK> |
<MARK> | <PRIORITY> | <QUEUE> | <RELEASE>
| <SEIZE> | <SPLIT> |
<TABULATE>
| <TERMINATE> | <UNLINK>
<BranchStatement>
:= <IF_statement> | <CASE_statement> |
<TRANSFER_statement> | <WAIT_UNTIL>
<AssignStatement>
::= <SimpleType> := <ArithmeticExpresion>
<I/O_Statement>
:= <CLOSE> |<INPUT> | <OPEN> | <PRINT> |
<REPORT> | <PLOT>
<CONTROL_specification>
::= CTRL_BEGIN
{<Statement_ctrl>}
CTRL_END
<Statement_ctrl>
::= <RESET_statement> | <CLEAR_statement> |
<START_statement>
<RESET_statement>
::= RESET
<CLEAR_statement>
::= CLEAR
<START_statement>
::= <terminal_counter_value>
<terminal_counter_value>
::= <numerical_operand>
<COMMENT> ::=
<comment_start> {<symbol>} <comment_end>
<comment_start>
::= {
<comment_end>
::= }
<symbol> ::=
any ASCII character
N.B. A comment can be placed anywhere between the MODEL <ModelName> and END_MODEL statements
Figure 1 - Brief format of the ISDS language syntax