Interface for qBeta module object

Origin: Compiler

lexer: obj
   %requires FileSys,symbols,StringLib
   maxInt: val
   XVarray:
      in range: var integer
      XV: ref Indexed
      top: var integer
      put:
         in V: var integer
         in inx: var integer
      get:
         in inx: var integer
         out V: var integer
      add:
         in V: var integer
   init:<
      in FN: ref String
      in SF: ref FileSys.File
   srcFN: ref String
   srcF: ref FileSys.File
   hasLexError: var Boolean
   ch: var char
   token: var integer
   tokenStr: ref String
   buffer: obj XVarray
   nextCh: obj
      pos: var integer
      linePos: var integer
      onlyWhiteSpace: var Boolean
      get:
   printLinesx:
   printLines:
      pTop: var integer
      lc: var integer
      c: var integer
   readName:
      in cx: var char
      isConst: var Boolean
      sym: obj indexed(,#char)
      prevCh: var char
      i: var integer
         --"readName C = {C(cx)} ch = {C(ch)}\n".print
         
   readString:
      sym: obj indexed(,#char)
      i: var integer
         --"readString {C(ch)} {I2s(sym.length) }".print
         
   comment: obj
      theCom: ref String
      i: var integer
      sym: ref Indexed
      skip:
         i: var integer
         putx:
            in c: var char
         get:
         loop:
   parenthLevel: var integer
   readNextToken:
      out hasComment: var Boolean
         --"readNextToken: {C(ch)}\n".print
         
   indent: obj
      init:
      dumpStack:
         in inx: var integer
      skipBlanks:
         out inOut: var integer
         i: var integer
         atStartOfLine: var integer
      iStack: obj Indexed(,#integer)
      top: var integer
      push:
         in V: var integer
      revert:
         in ind: var integer
   nextTokens:
      inOut: var integer
   peekNext:
      -- Not tested
      -- read and return next token; put token in tokenBuf
      -- keep current value of token, peeked tokenStr] should also be buffered
      in n: var integer
      out T: var integer
      currentToken: var integer
      currentTokenStr: ref String
   tokenBuf: obj
      B: obj Indexed(,#integer)
      sy: obj IndexedRef(,#string)
      L: var integer
      R: var integer
      add:
         in T: var integer
         in S: ref String
      get:
         out T: var integer
         S: ref String
      getTokenNo:
         in n: var integer
         out T: var integer
      isEmpty:
         out B: var Boolean
   next:
      -- tokenStr := "-V-" ???
      
   %Module symbols