diff --git a/jsonic/lexer.rkt b/jsonic/lexer.rkt new file mode 100644 index 0000000..df37983 --- /dev/null +++ b/jsonic/lexer.rkt @@ -0,0 +1,16 @@ +#lang br/quicklang + +(require brag/support) + +(define (make-tokenizer port) + (define (next-token) + (define jsonic-lexer + (lexer + [(from/to "//" "\n") (next-token)] + [(from/to "@$" "$@") + (token 'SEXP-TOK (trim-ends "@$" lexeme "$@"))] + [any-char (token 'CHAR-TOK lexeme)])) + (jsonic-lexer port)) + next-token) +(provide make-tokenizer) + diff --git a/jsonic/parser.rkt b/jsonic/parser.rkt new file mode 100644 index 0000000..2683dce --- /dev/null +++ b/jsonic/parser.rkt @@ -0,0 +1,4 @@ +#lang brag +jsonic-program: (jsonic-char | jsonic-sexp)* +jsonic-char: CHAR-TOK +jsonic-sexp: SEXP-TOK