Literal
Formal Definition
A value that is directly specified
in a description of a design.
Full Syntax:
literal ::= numeric_literal
| enumeration_literal
| string_literal
| bit_string_literal
| null
numeric_literal ::= abstract_literal | physical_literal
abstract_literal ::= decimal_literal | based_literal
decimal_literal ::= integer [ . integer ] [ exponent ]
integer ::= digit { [ underline ] digit }
exponent ::= E [ + ] integer | E - integer
based_literal ::= base #
based_integer [ . based_integer ] #
[ exponent ]
base ::= integer
based_integer ::= extended_digit { [underline] extended_digit }
extended_digit ::= digit | letter
physical_literal ::= [ abstract_literal ] unit_name
enumeration_literal ::= identifier | character_literal
character_literal ::= ' graphic_character '
string_literal ::= " { graphic_character } "
bit_string_literal ::= base_specifier " bit_value "
base_specifier ::= B | O
| X
bit_value ::= extended_digit { [ underline ] extended_digit }
Description
There are five classes of literals: numeric literals, enumeration
literals, string literals, bit string literals and the literal null.
Numeric literals
The class of numeric literals includes abstract literals (which
include integer literals and real literals) and physical literals.
The difference between integer and real literals lies in the decimal
point: a real literal includes a decimal point, while an integer
literal does not. When a real or integer literal is written in the
conventional decimal notation it is called a decimal literal. Example
1 presents several abstract literals - both integer and real.
If a number is written in the exponential form, the letter E of the
exponent can be written either in lowercase or in uppercase. If the
exponential form is used for an integer number then zero exponent is allowed.
Abstract literals can be written in the form of based literals as
well. In such a case the base is specified explicitly (in decimal
literals the base is implicitly ten). The base in based literal must
be at least two and at most sixteen. The base is specified in decimal notation.
The digits used in based literals can be any decimal digits (0..9) or
a letter (either in upper or lower case). The meaning of based
notation is as in decimal literals, with the exception of base.
Several based literals are presented in Example 1.
A Physical literal consists
of an abstract numeric literal followed by an identifier that denotes
the unit of the given physical quantity (example 1).
Enumeration literals
The enumeration literals are literals of enumeration
types, used in type declaration and in expressions evaluating
to a value of an enumeration type. They include identifiers
and character literals. Reserved words may not be used in
identifiers, unless they are a part of extended identifiers which
start and end with a backslash. See identifiers
for more information on identifiers. Example 2 presents several
enumeration literals.
String Literals
String literals are composed as a sequence of graphic characters
(letters, digits, special characters) enclosed between two quotation
marks (double quotes). They are usually used for warnings or reports
which are displayed during simulation (example 3).
Bit string literals
Bit string literals represent values of string literals that denote
sequences of extended digits, range of which depends on the specified base.
The base specifier determines the base of the digits: letter B used
as a base specifier denotes binary digits (0 or 1), letter O - octal
digits (0 to 7) and letter X - hexadecimal (digits 0 to 9 and letters
A to F, case insensitive). Underlines can be used to increase
readability and have no impact on the value.
All values specified as bit string literals are converted into binary
representation without underlines. Binary strings remain unchanged
(only underlines are removed), each octal digit is converted into
three bits and each hexadecimal into four bits (example 4).
Examples
Example 1
-- Decimal literals:
14
7755
156E7
188.993
88_670_551.453_909
44.99E-22
-- Based literals:
16#FE# -- 254
2#1111_1110# -- 254
8#376# -- 254
16#D#E1 -- 208
16#F.01#E+2 -- 3841.00
2#10.1111_0001#E8 -- 1506.00
-- Physical literals:
60 sec
100 m
kohm
177 A
Abstract literals written in different forms: as decimal, based and
physical literals.
Example 2
State0 Idle
TEST \test\
\out\ \OUT\
This example presents several enumeration literals. Note that such
literals are not specified in double quotes. Out
is a reserved word and as such cannot be used as an identifier
(enumeration literal). It may be, however, a part of an extended
literal. Extended literals are case sensitive; therefore, \out\ and
\OUT\ are different literals.
Example 3
"ERROR"
"Both S and Q equal to 1"
"X"
"BB$CC"
"{LOW}"
"Quotation: ""REPORT..."""
A string literal may contain any number of characters (including
special characters), as long as it fits on one line. It can also be a
null string or a one-character long string. If a quotation sign has
to be used in a string literal, it is denoted by two double quotes
side by side.
Example 4
B"1111_1111" -- binary representation of a vector
B"11111111" -- binary representation of the same vector
X"FF" -- hexadecimal representation of the same vector
O"377" -- octal representation of the same vector
Four methods to denote decimal 255 with bit string literals. In all
cases the literals will be converted into binary version, i.e. "11111111".
Important Notes
-
Underline character can be used in decimal literals (inserted between
adjacent digits) to improve readability. In such a case it has no
other meaning than just a space.
-
Abstract literals cannot contain any spaces, not even between
constituents of the exponent.
-
A string literal must fit on one line. If longer sequence of
characters in required, it may be obtained by concatenating shorter literals.
|