[542] | BasicStatements | ::= | Assignment
| LogStatement |
LoopConstruct
| ConditionalConstruct | |
[543] | Expression | ::= | SingleExpression |
CompoundExpression
| /* Static semantics:
Expression shall
not contain Configuration, activate operation or verdict
operations within the module control part */
|
[544] | CompoundExpression | ::= | FieldExpressionList
| ArrayExpression
| /* Static semantics: Within
CompoundExpression the
ArrayExpression can be used
for Arrays, record, record of and set of
types. */
|
[545] | FieldExpressionList | ::= | "{" FieldExpressionSpec
{"," FieldExpressionSpec}
"}" | |
[546] | FieldExpressionSpec | ::= | FieldReference
AssignmentChar
Expression | |
[547] | ArrayExpression | ::= | "{" [ArrayElementExpressionList]
"}" | |
[548] | ArrayElementExpressionList | ::= | NotUsedOrExpression
{"," NotUsedOrExpression} | |
[549] | NotUsedOrExpression | ::= | Expression
| NotUsedSymbol | |
[550] | ConstantExpression | ::= | SingleConstExpression
| CompoundConstExpression | |
[551] | SingleConstExpression | ::= | SingleExpression
| /* Static semantics:
SingleConstExpression
shall not contain Variables or Module parameters and shall
resolve to a constant Value at compile
time */
|
[552] | BooleanExpression | ::= | SingleExpression
| /* Static semantics:
BooleanExpression shall
resolve to a Value of type boolean */
|
[553] | CompoundConstExpression | ::= | FieldConstExpressionList
| ArrayConstExpression
| /* Static semantics: Within
CompoundConstExpression
the ArrayConstExpression
can be used for Arrays, record, record of and set of
types. */
|
[554] | FieldConstExpressionList | ::= | "{" FieldConstExpressionSpec
{"," FieldConstExpressionSpec}
"}" | |
[555] | FieldConstExpressionSpec | ::= | FieldReference
AssignmentChar
ConstantExpression | |
[556] | ArrayConstExpression | ::= | "{" [ArrayElementConstExpressionList]
"}" | |
[557] | ArrayElementConstExpressionList | ::= | ConstantExpression
{"," ConstantExpression} | |
[558] | Assignment | ::= | VariableRef
AssignmentChar
Expression
| /* Operational semantics: The
Expression on the
RHS of Assignment
shall evaluate to an explicit Value of the type of the
LHS. */
|
[559] | SingleExpression | ::= | SimpleExpression
{LogicalOp
SimpleExpression}
| /* Operational semantics: If
both SimpleExpressions and the
LogicalOp exist then
the SimpleExpressions shall
evaluate to specific values of compatible
types */
|
[560] | SimpleExpression | ::= | ["not"] SubExpression
| /* Operational semantics:
Operands of the not operator shall be of type boolean (TTCN or
ASN.1) or derivatives of type boolean */
|
[561] | SubExpression | ::= | PartialExpression
[RelOp PartialExpression]
| /* Operational semantics: If
both PartialExpressions and
the RelOp exist then the
PartialExpressions shall
evaluate to specific values of compatible
types. */ /* Operational
semantics: If RelOp is < ,
> , >= , or
<= then each SubExpression shall evaluate
to a specific integer, Enumerated or float Value (these values
can either be TTCN or ASN.1 values) */
|
[562] | PartialExpression | ::= | Result
[ShiftOp Result]
| /* Operational semantics:
Each Result shall resolve to a specific Value. If more than one
Result exists the right-hand operand shall be of type integer
and if the ShiftOp is
<< or >> then the
left-hand operand shall resolve to
either bitstring, hexstring or octetstring type. If the shift op
is <@ or @> then the
left-hand operand shall be of type
bitstring, hexstring, charstring or universal
charstring */
|
[563] | Result | ::= | SubResult
{BitOp SubResult}
| /* Operational semantics: If
both SubResults and
the BitOp exist then the
SubResults shall
evaluate to specific values of compatible
types */
|
[564] | SubResult | ::= | ["not4b"] Product
| /* Operational semantics: If
the not4b operator exists, the operand shall
be of type
bitstring, octetstring or hexstring. */
|
[565] | Product | ::= | Term {AddOp Term} | /* Operational
semantics: Each Term
shall resolve to a specific Value. If more than one
Term exists and the
AddOp resolves to
StringOp then the
terms shall resolve to same type which shall be of bitstring,
hexstring, octetstring, charstring or universal charstring.If
more than one Term
exists and the AddOp
does not resolve to StringOp then the Terms shall both resolve to type
integer or float. */
|
[566] | Term | ::= | Factor
{MultiplyOp
Factor}
| /* Operational semantics:
Each Factor shall
resolve to a specific Value. If more than one Factor exists then the Factors shall resolve to type
integer or float. */
|
[567] | Factor | ::= | [UnaryOp]
Primary
| /* Operational semantics: The
Primary shall resolve
to a specific Value. If UnaryOp exists and is "not" then
Primary shall resolve
to type boolean if the UnaryOp is + or
- then
Primary shall resolve
to type integer or float. If the UnaryOp resolves to
not4b then the
Primary shall resolve to the type bitstring, hexstring or
octetstring. */
|
[568] | Primary | ::= | OpCall |
Value | "("
SingleExpression
")" | |
[569] | ExtendedFieldReference | ::= | {(Dot (
StructFieldIdentifier
| ArrayOrBitRef |
TypeDefIdentifier))
| ArrayOrBitRef }+
| /* Operational semantics: The
TypeDefIdentifier shall
be used only if the type of the VarInstance or ReferencedValue in which
the ExtendedFieldReference
is used is anytype. */
|
[570] | OpCall | ::= | ConfigurationOps
| VerdictOps |
TimerOps |
TestcaseInstance
| FunctionInstance
| TemplateOps |
ActivateOp | |
[571] | AddOp | ::= | "+" | "-" | StringOp
| /* Operational semantics:
Operands of the + or -
operators shall be of type integer or
float (i.e., TTCN or ASN.1 predefined) or derivations of integer
or float (i.e., subrange) */
|
[572] | MultiplyOp | ::= | "*" | "/" | "mod" | "rem"
| /* Operational semantics:
Operands of the * , / ,
rem or mod operators shall
be of type
integer or float (i.e., TTCN or ASN.1 predefined) or derivations
of integer or float (i.e., subrange). */
|
[573] | UnaryOp | ::= | "+" | "-" | /* Operational
semantics: Operands of the + or
- operators
shall be of type integer or float (i.e., TTCN or ASN.1
predefined) or derivations of integer or float (i.e.,
subrange). */
|
[574] | RelOp | ::= | "==" | "<" | ">" | "!=" | ">="
| "<=" | /* Operational
semantics: the precedence of the operators is
defined here */
|
[575] | BitOp | ::= | "and4b" | "xor4b" | "or4b"
| /* Operational semantics:
Operands of the and4b ,
or4b or xor4b operator
shall be of type
bitstring, hexstring or octetstring (TTCN or ASN.1) or
derivatives of these types. */
|
[576] | LogicalOp | ::= | "and" | "xor" | "or"
| /* Operational semantics:
Operands of the and , xor ,
or or operators shall be of type boolean
(TTCN or ASN.1) or derivatives of type boolean. */ /* Operational semantics: the
precedence of the operators is defined here */
|
[577] | StringOp | ::= | "&" | /* Operational
semantics: Operands of the &
operator shall be
bitstring, hexstring,
octetstring or character string */
|
[578] | ShiftOp | ::= | "<<" | ">>" | "<@" |
"@>" | |
[579] | LogStatement | ::= | LogKeyword
"(" [FreeText]
")" | |
[580] | LogKeyword | ::= | "log" | |
[581] | LoopConstruct | ::= | ForStatement |
WhileStatement |
DoWhileStatement | |
[582] | ForStatement | ::= | ForKeyword
"(" Initial
SemiColon
Final SemiColon Step ")" StatementBlock | |
[583] | ForKeyword | ::= | "for" | |
[584] | Initial | ::= | VarInstance |
Assignment | |
[585] | Final | ::= | BooleanExpression | |
[586] | Step | ::= | Assignment | |
[587] | WhileStatement | ::= | WhileKeyword "("
BooleanExpression ")"
StatementBlock | |
[588] | WhileKeyword | ::= | "while" | |
[589] | DoWhileStatement | ::= | DoKeyword
StatementBlock
WhileKeyword
"(" BooleanExpression
")" | |
[590] | DoKeyword | ::= | "do" | |
[591] | ConditionalConstruct | ::= | IfKeyword
"(" BooleanExpression ")"
StatementBlock
{ElseIfClause}
[ElseClause] | |
[592] | IfKeyword | ::= | "if" | |
[593] | ElseIfClause | ::= | ElseKeyword IfKeyword "(" BooleanExpression ")"
StatementBlock | |
[594] | ElseKeyword | ::= | "else" | |
[595] | ElseClause | ::= | ElseKeyword StatementBlock | |