Reading the LRM , Language Reference Manual, syntax. ( LRM is the old salts name for ANSI/MIL-STD-1815A ) This will use as an example, subtype. 1. Use the index in appendix E, on page E-13 subtype is shown to have only one entry, subtype_declaration in 3.3.2 Note: The 3.3.2 is syntax summary location and the LRM paragraph number for reading about subtypes. 2. Now find 3.3.2 in the middle of the right hand column of page E-1. The syntax is repeated here: subtype_declaration ::= subtype identifier is subtype_indication ; subtype_indication ::= type_mark [ constraint ] type_mark ::= type_name | subtype_name constraint ::= range_constraint | floating_point_constraint | fixed_point_constraint | index_constraint | discriminant_constraint 3. Just an aside on cross referencing. Look up type_mark on page E-14 and note that it points back to subtype_indication in 3.3.2 4. Note that type_name does not appear in the index thus assume it is a terminal symbol and use an English definition, e.g. the name of a type. Similarily for subtype_name. 5. The next token to be expanded is range_constraint. Looking up range_constraint on page E-12 shows 3.5 as the defining paragraph. Note also we can pick up some other references at the same time. i.e. fixed_point_constraint 3.5.9, and floating_point_constraint 3.5.7 Continuing to collect references, index_constraint 3.6, discriminant_constraint 3.7.2 6. Now filling in the expansion from the references we have the following range_constraint ::= floating_point_constraint ::= fixed_point_constraint ::= index_constraint ::= discriminant_constraint ::=