Scanner.def 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. DEFINITION MODULE Scanner; (* gf 05.01.89 (pl0) *)
  2. (* EXPORT QUALIFIED SYMBOL, IDENT, STRING, POSITION,
  3. dummyPosition,
  4. sym, id, num, pos, strp,
  5. GetSymbol,
  6. printCode, traceParser, printListing, optimize,
  7. InitScanner;
  8. *)
  9. TYPE SYMBOL = (sNull, sPeriod,
  10. sRBracket, sLBracket,
  11. sTimes, sDiv,
  12. sPlus, sMinus,
  13. sEQ, sNE, sLT, sLE, sGT, sGE,
  14. sAnd, sOr,
  15. sComma, sRParen, sThen, sDo, sBecomes,
  16. (* start formula --------------------------------*)
  17. sLParen, sOdd, sNot, sNumber, sString,
  18. (* start Statement ------------------------------*)
  19. sIdent, sCall, sIf, sWhile, sRead, sWrite,
  20. (* end Statement ------------------------------*)
  21. sEnd, sElsif, sElse, sSemicolon,
  22. (* sArray, sOf, *) sColon,
  23. (* start declarations or statementpart ----------*)
  24. sBegin, sType, sConst, sVar, sProcedure,
  25. sEof);
  26. TYPE IDENT = INTEGER;
  27. TYPE STRING = POINTER TO ARRAY[0..99] OF CHAR;
  28. TYPE POSITION = RECORD (* position in source text *)
  29. line, column : CARDINAL
  30. END;
  31. VAR sym : SYMBOL; (* last symbol read *)
  32. id : IDENT; (* identifier number *)
  33. num : CARDINAL; (* last number read *)
  34. strp: STRING; (* pointer to string read *)
  35. pos : POSITION; (* current position in source text *)
  36. dummyPosition : POSITION;
  37. VAR printCode,
  38. traceParser,
  39. optimize,
  40. printListing : BOOLEAN;
  41. noPosition : POSITION;
  42. PROCEDURE GetSymbol; (* get next symbol;
  43. * results: sym, id, num, strp, pos
  44. *)
  45. PROCEDURE InitScanner;
  46. END Scanner.