Header :

   OPEN_CHAR=<           # any character
   CLOSE_CHAR=>          # any character
   MAX_RECS_PER_LINE=1   # The maximal dcode records per line
   NUMBERING=EXPLICIT    # Options:
                         # EXPLICIT - The dcode numbers appear 
                         #            explicitly in the record.
                         # STD      - Standard enumeration.
                         # (10-19,70,71,20-29,72,73,30-69,74,75,...)
                         # ORD4     - (4, 5, 6,...)
                         # ORD10    - (10, 11, 12,...)
                         # ORD      - (4, 5, 6,...) (same as ORD4)
			 # STATION  - Standard enumeration
			 #            according to station number
   DEFAULT_UNITS=1+0MIL  # <optional multiplier> <+/->
                         # <optional constant> MIL|INCH|MM
   ROTATION_UNITS=1      # To Arrive at degrees
   OUT_OF_RANGE_POLICY=  # Options:
                         # MOVE_1000 (default) -
                         #    Move decimal point either three places
                         #    to the right or three places to the
                         #    left if the values in the customer
                         #    wheel file are out of range.
                         #    Works only if all units in template
                         #    are the same.
                         #    (except angle, rotation, and count)
                         # STAY -
                         #    Out of range apertures are reported
                         #    as unknown features.
   CONDITIONAL_UNITS=    # This is a special feature for enabling
                         # the choosing of units of a template
                         # according to what is written in the
                         # user wheel.
                         # Syntax:
                         #  <optional multiplier> <+/->
                         #  <optional constant> MIL|INCH|MM
                         #  <<"match string">>
                         # e.g.
                         #    CONDITIONAL_UNITS=MM <"Units: MM">
                         #    CONDITIONAL_UNITS=INCH <"ENGLISH">
                         # Any number of ``CONDITIONAL_UNITS''
                         # may be specified.
                         # The match string is not case sensitive.

Comments :

   # Any line beginning with `sharp'

   
Record :

   A ``SHAPE'' line followed by a ``syn'' line (syntax)
   followed by zero or more ``sem'' lines      (semantics)
   followed by zero or more ``con'' lines      (constant)

   A shape line begins with ``SHAPE:'' followed by one of

      ROUND, SQUARE, RECT, RECT_R, RECT_C, OVAL,
      DIAMOND, BFR, BFS, TRIANGLE, OCTAGON, 
      OVAL_H, HEXAGON_L,
      R_THERMAL, S_THERMAL, SR_THERMAL,
      HEXAGON_S, DONUT_R, DONUT_S,
      MOIRE, SPECIAL,  NONE
      
   A ``syn'' line begins with ``syn:'' and is 
   followed by a run of the following:

   <INT>                 # positive integer              ([0-9]+)
   <INTk>                # positive integer of length exactly k
                         # where k is a digit from 1 to 9
   <FLOAT>               # positive floting point number
   <ALPHA>               # alphabetic string             ([A-Za-z]+)
   <CHAR>                # any one character             (.)
   <ANY>                 # any non-numeric string        ([^0-9]*)
   <STR>                 # any string without whitespace ([^ \t]+)
                         # (like %s of scanf())
   <NL>                  # new line                      ($)
   <VBAR>                # Vertical bar, ``|''
   <PARENTHESISED>       # any parenthesized string not containing
                         # closed parentheses
   <"string">            # string w/o quotation marks
   <"string1|string2">   # A possibility of one of two strings
                         # with more than one ``|'' allowed
   <_____=A>             # Any of the above followed by a
                         # single letter variable [A-J]
                         # Normally used for <INT=A>, <FLOAT=D>,...
                         # and for designating names of SPECIAL's
   <INT=SIZE>            # any size or ROTATION except STYLE
   <INTk=WIDTH>          # any size or ROTATION except STYLE
   <FLOAT=WIDTH>         # any size or ROTATION except STYLE
   <b>                   # blank                         ([ \t]+)
   <_____?>              # Any of the above followed by ``?''
   <INT=DCODE>           # An integer which is the dcode
   <INTk=DCODE>          # A fixed length integer dcode
                         # meaning that presence is optional.
	                 # Note: In case NUMBERING=STATION,
			 #       The integer is the station number
   string                # Any string not containing quotation
                         # marks or OPEN_CHAR (``<'')
                                   
   A ``sem'' line begins with ``sem:'' and is followed by
   one or more of the following seperated by semicolons (``;'')
   
   <letter>=<size>
   <letter>=<size>(UNITS= <units>)
   <letter>=<size>(UNITS= <coefficient> <units>)
   <letter>=<size>(UNITS= <coefficient><+/-><constant> <units>)
   
   where <letter> is a letter which appears on the right side of
   an equal sign in the preceding ``syn'' record.
   <units> is INCH, MIL, or MM.
   <coefficient> is an unsigned constant to multiply the value by.
   <+/-><constant> is a constant to add/subtract from the value
                   read from the wheel file
                         
   A ``con'' line is used in the case that one of the sizes
   of an aperture does not appear in the wheel file and takes on
   a constant value. 
   
   e.g.

      con:SPOKES=4
      con:ANGLE=45 DEGREES
      con:STYLE=ROUND
      con:NAME=moire20
      con:NAME=target<A>x<B>        -- constructed name of special
