home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / dev / e / amigae / src / tools / lex / simplelex.doc next >
Text File  |  1992-09-02  |  2KB  |  48 lines

  1. simplelex.m: very simple general purpose lexical analyser for various tasks.
  2.  
  3. This lex() can used there where one quickly needs a lex without
  4. bothering to make one yourself. It may also serve as an example
  5. or starting point on how to make your own lex. See simplelextest.e
  6. for a nice parser example that makes use of this lex.
  7.  
  8.  
  9.     lex_int(start,len,freeform=FALSE,onelinecomment=-2)
  10.  
  11. initialises the lex. start and len denote the memory area where
  12. the text is that lex() will take it's tokens from. The memory
  13. needs to be trailed by "\n", readfile() from file.m does this for
  14. you. freeform says wether "\n" should be interpreted as whitespace
  15. or not. onelinecomment allows only one char.
  16.  
  17.     token,attr:=lex()
  18.  
  19. the actual lex. returns a token, and for some tokens also an attribute.
  20.  
  21. " ", "\t"            whitespace, not returned
  22. "\n"                LEX_EOL, or whitespace
  23. "[a-zA-Z_][a-zA-Z0-9_]*"    LEX_IDENT, attr=ptr to first char
  24.                 [same as E's idents]
  25. <num>                LEX_INTEGER, attr=value
  26.                 [everything accepted by Val()]
  27. <eof>                LEX_EOF
  28. "<anything>"            LEX_STRINGQ, attr=ptr to first char
  29. '<anything>'            LEX_STRINGA, idem.
  30.  
  31. any other character is returned as token on it's own.
  32.  
  33.     linenum:=lex_curline()
  34.  
  35. returns the current linenumber being lexical-analysed.
  36.  
  37.     ptr:=lex_current()
  38.  
  39. returns the current ptr in the text. Handy for those cases where
  40. lex() returns 'ptr to first char', as this will then be 'ptr past
  41. last char'.
  42.  
  43.     pos:=lex_getline(estring)
  44.  
  45. copies the current line into the estring, and returns the offset
  46. into that string where lex() currently is. Very handy for precise
  47. error-reports, as the simplelextest.e demonstrates.
  48.