|
|
|
@ -94,7 +94,13 @@
|
|
|
|
|
"Form should be (define-lex-abbrevs (name re) ...)"
|
|
|
|
|
stx))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(require (lib "cffi.ss" "compiler"))
|
|
|
|
|
(define get-next-state ;;(lambda (input-char state eof-table trans-table)
|
|
|
|
|
(c-lambda (scheme-object int scheme-object scheme-object) int
|
|
|
|
|
"if (SCHEME_EOFP(___arg1))
|
|
|
|
|
return (SCHEME_VEC_ELS(___arg3))[___arg2];
|
|
|
|
|
else
|
|
|
|
|
return (SCHEME_VEC_ELS(___arg4))[SCHEME_CHAR_VAL(___arg1) | ___arg2 << 8]; "))
|
|
|
|
|
|
|
|
|
|
(define (lexer-body start-state trans-table eof-table actions no-lookahead wrap?)
|
|
|
|
|
(lambda (lb)
|
|
|
|
@ -121,13 +127,13 @@
|
|
|
|
|
(longest-match-length 1))
|
|
|
|
|
(let ((next-state
|
|
|
|
|
(cond
|
|
|
|
|
((eof-object? char)
|
|
|
|
|
(vector-ref eof-table state))
|
|
|
|
|
(else
|
|
|
|
|
(vector-ref
|
|
|
|
|
trans-table
|
|
|
|
|
(bitwise-ior (char->integer char)
|
|
|
|
|
(arithmetic-shift state 8)))))))
|
|
|
|
|
((eof-object? char)
|
|
|
|
|
(vector-ref eof-table state))
|
|
|
|
|
(else
|
|
|
|
|
(vector-ref
|
|
|
|
|
trans-table
|
|
|
|
|
(bitwise-ior (char->integer char)
|
|
|
|
|
(arithmetic-shift state 8)))))))
|
|
|
|
|
(cond
|
|
|
|
|
((not next-state)
|
|
|
|
|
(do-match lb first-pos longest-match-length longest-match-action wrap?))
|
|
|
|
|