#lang racket/base
(require brag/support)
(provide tokenize tokenize-string)
(define (tokenize-string str)
(let ([ip (open-input-string str)])
(tokenize ip)))
(define (tokenize ip)
(define my-lexer
(lexer-src-pos
[(:+ numeric)
(token 'NUMBER (string->number lexeme))]
[(:or "+" "-" "*" "/" "(" ")" )
(token lexeme lexeme)]
[whitespace
(token 'WHITESPACE lexeme #:skip? #t)]
[(eof)
(void)]))
(define (next-token) (my-lexer ip))
next-token)