home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 549b.lha / M2P_v1.0_sources / source.lzh / LexAn.def < prev    next >
Text File  |  1991-08-10  |  4KB  |  76 lines

  1. (*======================================================================*)
  2. (*                        Modula-2 Lexical Analyzer                     *)
  3. (*======================================================================*)
  4. (*  Version:  1.00              Author:   Dennis Brueni                 *)
  5. (*  Date:     07-07-91          Changes:  original                      *)
  6. (*======================================================================*)
  7. (*  The lexical analyzer is implemented as a Finite State Automaton     *)
  8. (*  which recoginizes the next valid Modula-2 token from the input      *)
  9. (*  channel specified at the time SetSourceFile is called.              *)
  10. (*======================================================================*)
  11.  
  12. DEFINITION MODULE LexAn;
  13.  
  14. IMPORT SymLists,FSM;
  15.  
  16.  
  17. VAR PrintTokens:  BOOLEAN;
  18.  
  19. (*----------------------------------------------------------------------*)
  20. (*  SETSOURCEFILE   Informs the Lexical Analyzer of the name of the     *)
  21. (*                  Modula-2 Source file for it to parse.  It will      *)
  22. (*                  then open the file for reading, or return FALSE     *)
  23. (*                  if unsuccessful.  If SetSourceFile is not performed *)
  24. (*                  LexAn will assume the Standard input channel.       *)
  25. (*                                                                      *)
  26. (*  PARAMETER   FileName:  A valid AmigaDOS path/filename.              *)
  27. (*                                                                      *)
  28. (*  RETURNS     TRUE if successful, FALSE if not.                       *)
  29. (*----------------------------------------------------------------------*)
  30.  
  31. PROCEDURE SetSourceFile(FileName: ARRAY OF CHAR):BOOLEAN;
  32.  
  33. (*----------------------------------------------------------------------*)
  34. (*  SETDESTFILE     Informs the Lexical Analyzer of the name of the     *)
  35. (*                  Modula-2 Source file for it to produce.  It will    *)
  36. (*                  then open the file for writing, or return FALSE     *)
  37. (*                  if unsuccessful.  If SetDestFile is not performed   *)
  38. (*                  LexAn will assume the Standard output channel.      *)
  39. (*                                                                      *)
  40. (*  PARAMETER   FileName:  A valid AmigaDOS path/filename.              *)
  41. (*                                                                      *)
  42. (*  RETURNS     TRUE if successful, FALSE if not.                       *)
  43. (*----------------------------------------------------------------------*)
  44.  
  45. PROCEDURE SetDestFile(FileName: ARRAY OF CHAR):BOOLEAN;
  46.  
  47. (*----------------------------------------------------------------------*)
  48. (*  FEEDMACRO   Feeds a macro into GetToken's personal macro list.      *)
  49. (*              When this list is empty, GetToken reads from the source *)
  50. (*              file.                                                   *)
  51. (*                                                                      *)
  52. (*  PARAMETER   list - The macro list to feed in                        *)
  53. (*----------------------------------------------------------------------*)
  54.  
  55. PROCEDURE FeedMacro(list: SymLists.SymList);
  56.  
  57. (*----------------------------------------------------------------------*)
  58. (*  GETTOKEN    Moves current token pointer to the next BSU (Basic      *)
  59. (*              Syntactic Unit) of the Oberon program.  This single     *)
  60. (*              function is the main interface to the Lexical Analyzer. *)
  61. (*----------------------------------------------------------------------*)
  62.  
  63. PROCEDURE GetToken;
  64.  
  65. (*----------------------------------------------------------------------*)
  66. (*  PRINTTOKEN  This Procedure provides a standard way to print token   *)
  67. (*              information, including the token type, length, and the  *)
  68. (*              string comprising the token.  The token is passed by    *)
  69. (*              reference for efficiency only, it is not changed.       *)
  70. (*                                                                      *)
  71. (*  PARAMETERS  Token :  The token record to print out                  *)
  72. (*----------------------------------------------------------------------*)
  73.  
  74. PROCEDURE PrintToken(VAR Token: FSM.TokenRec);
  75.  
  76. END LexAn.