Previous Contents

BNF syntax of the interface description language

$accept : %entry% $end
TypeName : IDENT
         | WIDGET
Type0 : TYINT
      | TYFLOAT
      | TYBOOL
      | TYCHAR
      | TYSTRING
      | TypeName
Type1 : Type0
      | TypeName LPAREN IDENT RPAREN
      | WIDGET LPAREN IDENT RPAREN
      | OPTION LPAREN IDENT RPAREN
Type2 : Type1
      | Type1 LIST
Type_list : Type2 COMMA Type_list
          | Type2
FType : LPAREN RPAREN
      | LPAREN Type2 RPAREN
      | LPAREN Type_list RPAREN
Type : Type2
     | FUNCTION FType
Arg : STRING
    | Type
    | Template
ArgList : Arg SEMICOLON ArgList
        | Arg
Template : LBRACKET ArgList RBRACKET
Constructor : IDENT Template
AbbrevConstructor : Constructor
                  | IDENT
Constructors : Constructor Constructors
             | Constructor
AbbrevConstructors : AbbrevConstructor AbbrevConstructors
                   | AbbrevConstructor
Safe :
     | UNSAFE
Command : Safe FUNCTION FType IDENT Template
External : Safe EXTERNAL IDENT STRING
Option : OPTION IDENT Template
       | OPTION IDENT
WidgetComponents :
                 | Command WidgetComponents
                 | Option WidgetComponents
                 | External WidgetComponents
ModuleComponents :
                 | Command ModuleComponents
                 | External ModuleComponents
ParserArity :
            | SEQUENCE
entry : TYPE ParserArity TypeName LBRACE Constructors RBRACE
      | TYPE ParserArity TypeName EXTERNAL
      | SUBTYPE ParserArity OPTION LPAREN IDENT RPAREN LBRACE AbbrevConstructors RBRACE
      | SUBTYPE ParserArity TypeName LPAREN IDENT RPAREN LBRACE AbbrevConstructors RBRACE
      | Command
      | WIDGET IDENT LBRACE WidgetComponents RBRACE
      | MODULE IDENT LBRACE ModuleComponents RBRACE
      | EOF
%entry% : '\001' entry

Previous Contents