ModMultiSim help v3.06 - 5.1. Lexical Structure
Download manual: HTML
ModMultiSim contains 4 classes of tokens: identifiers, constants, operators and keywords.
token:
identifier
keyword
constant
operator
Whitespace (space, newlines, tabs) is ignored except in its role as a separator of tokens.
-
identifier :
integer_constant
integer_constant integer_constant
letter_sequence
letter_sequence : letter letter*
letter :
A integer_constant (a followed by a sequence of digits as in $15) is the form of identifier used to refer to a register. An expression may contain a reference to any register, including itself. An alternative way to refer to itself is by using the form .
To identify a specific register, the register address is used as the sequence of digits after the Map Addresses). Identifiers can therefore occur in the range $0 to $2147483647. This form of identifier may only be used in the statement of a register.
. The minimum value for an address is 0 and the maximum value 'model address' is 2147483647 (seeA integer_constant integer_constant (a followed by a sequence of digits followed by and another sequence of digits as in $3$15) is the form of identifier used to refer to a register in a specific slave. The digits after the first represent the slave, and those after the second represent the address of the register, as above. This form of identifier is used in the statement of an environment property. For example, if a slave with an id of 3 controls a heater in the environment by setting a counter in register 15, then the statement for an environment property for temperature may access the slave register value using:
$3$15
in order to compute its own value (temperature). (Though a slave may refer to another slave's registers, this would not be possible in the real world, so there would be no reason to do so here.)
A letter_sequence ( a followed by a sequence of letters as in $volume or $temp) is the form of identifier used to refer to an environment property. This form may be used in the statement of a register or an environment property. When used in the statement of an environment property it may refer to itself or to another environment property. For example, the statement to calculate pressure changes may refer to itself "presschange" and properties representing the temperature "temp", last recorded pressure "press" and volume "vol" in its statement:
$presschange - $press - ($temp / $vol)
In all the above cases, a warning message appears when an expression contains a reference to a register or environment property that has not yet been entered (declared). It is possible to continue and enter the register or property later.
-
keyword : | | | |
Keywords are all case-sensitive. Pre-defined Variables).
and are ModMultiSim variables (see section -
constant :
integer_constant
floating_constant
integer_constant : integer
integer : digit digit*
digit : | | | | | | | | |
An integer_constant is a digit followed by zero or more digits.
floating_constant :
integer period
integer period? exponent
integer? period integer exponent?
period :
exponent :
sign? integer
sign? integer
sign :
A floating_constant must have either a period [ ] or an exponent e.g. [ ], but may have both. It must also have an integer component either for the whole number part, or the fraction part, or both. The following are all valid examples::
67. 67.0 67.89 0.89 .89 6e-3 67.e+4 67.89e-2 0.89e1 .89e-4
For all constants, a sequence of digits is taken to be in decimal radix.
-
operator :
unary_sign
| |
binary_sign
|
bitwise_or
| | | | |
An operator specifies an operation to be performed that returns a value. The object that the operator acts upon is the operand.
The
operator shall always occur in a pair.