lexer.mp 667 B

123456789101112131415161718192021222324
  1. /* from the ACM TOSEM paper draft
  2. runs for scope 1 and 2, for scope 3 takes too long
  3. */
  4. SCHEMA lexer
  5. ROOT Text_Input: (* String_processing *);
  6. String_processing: Get_string (+ Unget_char +);
  7. Get_string: (+<2..3> Get_char +);
  8. ROOT Token_processing: (* Token_recognition *);
  9. Token_recognition: {+ RegExpr_Match +}
  10. (+ Unget_char +) Fire_rule;
  11. RegExpr_Match: (+ Get_char +);
  12. Fire_rule: [ Put_token ];
  13. COORDINATE $t: Token_recognition FROM Token_processing,
  14. $s: String_processing FROM Text_Input
  15. DO
  16. $t, $s SHARE ALL Unget_char;
  17. COORDINATE <!> $r: RegExpr_Match FROM $t
  18. DO $r, $s SHARE ALL Get_char ; OD;
  19. OD;