- Literal 
 
- A literal is a constant value that can be either a number, a character,
or a string. 
 
Number | CharLiteral | TextLiteral
- Identifier 
 
- Identifiers are names given to types, procedures, constants, etc. They
consist of a letter followed by one or more letters, digits, and underscores.
Modula-3 is case sensitive, so identifiers with the same letters in different
cases are different identifiers. Example: test, a_5 
 
Letter { Letter | Digit | "_" ... }
- CharLiteral 
 
- A character literal represents a single ASCII character (type CHAR).
Example: 'A', '\n', '\015' 
 
"'" (PrintingChar | Escape | ") "'"
A PrintingChar is a letter, digit, punctuation mark,
or any ISO-Latin-1 code in [ 160..255 ]. An Escape is
one of the following: 
- \n a newline character 
 
- \t a tab character 
 
- \r a carriage return character 
 
- \f a formfeed character 
 
- \\ a backslash character 
 
- \" a double-quote character 
 
- \' a single-quote character 
 
- \" OctalDigit OctalDigit OctalDigit:
a specific CHAR value, where OctalDigit is a digit
in the range [0..7]. Example: \015 (character
no. 13) 
 
- TextLiteral 
 
- A text literal represents a value of type TEXT (a string).
Example: "Hello.\n" 
 
" { PrintingChar | Escape | "'" ... } "
PrintingChar and Escape have the same
meanings as given above. 
- Number 
 
- A number is an integer or floating point number. Integers can be expressed
in any base [2..16] by writing the base followed by "_"
and the number in that base. Example: 2_1010 (base 2) = 8_12
(base 8) = 10 (base 10) = 16_A (base 16). Floating point
numbers can be expressed in the conventional scientific notation as follows:
 
Digit { Digit ... } "." Digit { Digit ... } [ Exponent ]
  where
Exponent = "E" | "D" | "X" [ "+" | "-" ] Digit { Digit ... }