br-bf start
parent
6f5b70086a
commit
1181bdfed1
@ -0,0 +1,14 @@
|
||||
#lang br
|
||||
|
||||
|
||||
(module reader syntax/module-reader
|
||||
#:language 'br-bf
|
||||
#:read bf-read
|
||||
#:read-syntax bf-read-syntax
|
||||
|
||||
(require "tokenizer.rkt" "parser.rkt")
|
||||
(define (bf-read in)
|
||||
(syntax->datum (bf-read-syntax #f in)))
|
||||
|
||||
(define (bf-read-syntax src ip)
|
||||
(list (parse src (tokenize ip)))))
|
@ -0,0 +1,10 @@
|
||||
#lang ragg
|
||||
|
||||
<expr> : ">"
|
||||
| "<"
|
||||
| "+"
|
||||
| "-"
|
||||
| "."
|
||||
| ","
|
||||
| <loop>
|
||||
<loop> : "["<expr>*"]"
|
@ -0,0 +1,10 @@
|
||||
#lang ragg
|
||||
|
||||
<expr> : ">"
|
||||
| "<"
|
||||
| "+"
|
||||
| "-"
|
||||
| "."
|
||||
| ","
|
||||
| <loop>
|
||||
<loop> : "["<expr>*"]"
|
@ -0,0 +1,24 @@
|
||||
#lang racket/base
|
||||
(require parser-tools/lex ragg/support)
|
||||
(provide tokenize)
|
||||
|
||||
(define (tokenize ip)
|
||||
(port-count-lines! ip)
|
||||
|
||||
(define my-lexer
|
||||
(lexer-src-pos
|
||||
[(repetition 1 +inf.0 numeric)
|
||||
(token 'INTEGER (string->number lexeme))]
|
||||
[upper-case
|
||||
(token 'STRING lexeme)]
|
||||
["b"
|
||||
(token 'STRING " ")]
|
||||
[";"
|
||||
(token ";" lexeme)]
|
||||
[whitespace
|
||||
(token 'WHITESPACE lexeme #:skip? #t)]
|
||||
[(eof)
|
||||
(void)]))
|
||||
|
||||
(define (next-token) (my-lexer ip))
|
||||
next-token)
|
Loading…
Reference in New Issue