* keyword ::= 'abstract' | 'and' | 'as' | 'assert' |
'begin' | 'bind' | 'break' |
'case' | 'class' | constant' | 'div' |
'else' | 'elsif' | 'end' | 'except' | 'external' |
'false' | 'if' | 'include' | 'Inf' | 'is' |
'like' | 'loop' | 'mod' | 'NaN' | 'not' | 'of' | 'or' |
'pragma' | 'private' | 'procedure' |
'raise' | 'readonly' | 'resume' | 'return' |
'shared' | 'stream' | 'subtype' | 'then' | 'true' | 'typecase' |
'value' | 'void' | 'when' | 'while' .
* special_feature_names ::= 'aget' | 'aset' | 'arg' | 'copy' |
'destroy' | 'downto' | 'exception' | 'invariant' |
'main' | 'res' | 'self' | 'str' |
'terminated' | 'type' | 'until' | 'upto' .
* special_class_names ::= 'EXCEPTION' | 'EXTOB' | 'OB' | 'ARR' | 'ARRAY' |
'BITS' | 'BOOL' | 'BYTE' | 'CHAR' | 'FILE' |
'FLT' | 'FLTD' | 'INT' |
'INTINF' | 'LONG_INT' | 'LONG_UNSIGNED' |
'REFERENCE' | 'ROW' |
'SHORT_INT' | 'SHORT_UNSIGNED' |
'STR' | 'STRING' | 'SYSTEM' | 'TEXT' 'TYPE' |
'UNSIGNED' | 'VALUE' | 'SAME' .
* special_exception_names ::= 'FLOAT_OVERFLOW' | 'FLOAT_UNDERFLOW' |
'INTEGER_OVERFLOW' | 'ZERO_DIVIDE' |
'NUMERIC_ERROR' |
'INDEX_ERROR' | 'REFERENCE_ERROR' |
'INVARIANT_ERROR' | 'ASSERTION_ERROR' |
'STREAM_TERMINATION' | 'EXIT' .
Keywords, special feature names, special class names and special
exception names are identifiers with predefined meanings. Keywords are
reserved and can only be used as prescribed in the syntax of the
language. The other ones can be partially redefined by the programmer.