Interface for qBeta module object

Origin: OOPM

Grammar: obj
   -- A grammar ia a 4-tuple G = (N,T,P,S) where
   -- N is a set of nonterminal symbols
   -- T is a set of terminal symbols, the intersection of N and T is empty
   -- P is a set of productions
   -- S is a sybol in N called the start symbol
   %visible StringLib,Containers.OrderedList,Containers.Set
   Grammar:
      nonTerminals: obj Set
      terminals: obj Set
      rules: obj OrderedList
      start: ref Nonterminal
      Symbol:
         id: var integer
         print:<
         isTerminal:<
            out V: var Boolean
      NonTerminal: Symbol
         print::
      Terminal: Symbol
         isTerminal::
         print::
      Rule:
         leftSide: ref Nonterminal
         alternatives: obj OrderedList
            print:
               i: var integer
         print:
      SymbolList: OrderedList
         print:
      Alternative:
         print:
      noOfRules: var integer
      addRule:
         R: ref Rule
         alt: ref Alternative
      print:
      parse:<
         output: ref AbstractSyntaxTree
   Text:
   AbstractSyntaxTree:
   %Module demo