RAPID GUI Grammar

Following is a portion of the LL(1) grammar for a GUI file.
  <x> means that x is a non-terminal symbol.  ABC means that abc is a terminal symbol.

<name>, <fg_color>, <bg_color> are strings
<action> is an Ada command surrounded by quotation marks
<frame_pkg> is an Ada package, surrounded by quotation marks, containing a variable Frame of type mcc.tki.Container.Frame.Frame
<fqtype> is a fully qualified public Ada type surrounded by quotation marks
<fqvar> is a fully qualified public Ada variable surrounded by quotation marks
<width>, <height>, <underline>, <x>, <y> are integers
<picture_file> is the name of a GIF file
<accel_key> is a string that represents a keyboard shortcut (e.g. Ctrl+X)
^ represents the empty string

<window> is the starting symbol for the grammar.

<window> ::= WINDOW <name> <title> <novice> <width> <height> <window_kind> <frame_pkg> <snaptogrid>
                    <menubar>
                    <widgets>
          ENDOF WINDOW
<menubar> ::= MENUBAR <menulist> ENDOF MENUBAR | ^
<menulist> ::= MENU <submenuinfo> <menulist> ENDOF MENU | ITEM <iteminfo> <menulist> | ^
<submenuinfo> ::= <name> <underline> <possible_action>
<possible_action> ::= <action> | ^
<iteminfo> ::= <name> <underline> <action> <accelerator>
<accelerator> ::= <accel_key> | ^
<novice> ::= boolean
boolean ::= FALSE | TRUE
<window_kind> ::= MAIN_WINDOW | SUB_WINDOW | FRAME_CHILD
<snaptogrid> ::= S_OFF | S_2 | S_4 | S_6 | S_8 | S_10 | S_12 | S_14 | S_16 | S_18 | S_20
<widgets> ::= WIDGETS <widgetlist> ENDOF WIDGETS | ^
<widgetlist> ::= <widget> <widgetlist> | ^
<font_info> ::= ! <font_family> <font_size> <font_style> | ^
<font_family> ::= SERIF | SANS_SERIF | MONOSPACED
<font_size> ::= natural
<font_style> ::= PLAIN | BOLD | ITALIC | BOLD_ITALIC
<name_and_footprint> ::= <name> <x> <y> <width> <height>
<common_info> ::= <name_and_footprint> <font_info>
<button_info> ::= <common_info> <action>
<widget> ::= <textbutton> | <picturebutton> | <label> | <textentry> | <checkbutton> | <radiobutton> | <picture> | <listbox> | <scale> | <progress> | <dropdown> | <textbox> | <frame>
<textbutton> ::= TEXTBUTTON <button_info> <text>
<picturebutton> ::= PICTUREBUTTON <button_info> <picture_file> <tooltip>
<label> ::= LABEL <common_info> <text> <justify> <fg_color> <bg_color>
<justify> ::= left | center | right
<textentry> ::= TEXTENTRY <common_info> <fqvar> <fqtype> <base_type>
<string_type> ::= STRING_SUBTYPE | UNBOUNDED_STRING | BOUNDED_STRING
<base_type> ::= <string_type> | INTEGER | UNSIGNED | ENUMERATION | FLOAT_1 | FLOAT_2 | FLOAT_3 | FLOAT_E
<checkbutton> ::= CHECKBUTTON <common_info> <text> <enum_var> <enum_type>
<enum_var> ::= <fqvar> | ^
<enum_type> ::= <fqtype> | ^
<radiobutton> ::= RADIOBUTTON <common_info> <text> <group>
<picture> ::= PICTURE <name_and_footprint> <picture_file>
<listbox> ::= LISTBOX <common_info> <horiz_scroll> <vert_scroll> <fg_color> <bg_color>
<horiz_scroll> ::= boolean
<vert_scroll> ::= boolean
<scale> ::= SCALE <common_info> <min> <max> <by> <mark_every>
<min> ::= integer
<max> ::= integer
<by> ::= integer
<mark_every> ::= integer
<progress> ::= PROGRESS <name_and_footprint> <fg_color> <bg_color>
<dropdown> ::= DROPDOWN <common_info> <number_rows> <fg_color> <bg_color> <enum_var> <enum_type>
<textbox> ::= TEXTBOX <common_info> <horiz_scroll> <vert_scroll> <fg_color> <bg_color> <fqvar> <fqtype> <string_type>
<frame> ::= FRAME <name_and_footprint>