1 | #lang brag |
1 2 | #lang brag
jsonic-program :
|
1 2 | #lang brag
jsonic-program : (jsonic-char | jsonic-sexp)*
|
1 2 3 4 | #lang brag jsonic-program : (jsonic-char | jsonic-sexp)* jsonic-char : jsonic-sexp : |
1 2 3 4 | #lang brag jsonic-program : (jsonic-char | jsonic-sexp)* jsonic-char : CHAR-TOK jsonic-sexp : SEXP-TOK |
1 2 | #lang br (require jsonic/parser jsonic/tokenizer brag/support) |
1 2 3 4 | #lang br (require jsonic/parser jsonic/tokenizer brag/support) (parse-to-datum (apply-tokenizer-maker make-tokenizer "// line commment\n")) |
1 2 3 4 | #lang br (require jsonic/parser jsonic/tokenizer brag/support) (parse-to-datum (apply-tokenizer-maker make-tokenizer "@$ 42 $@")) |
1 2 3 4 | #lang br (require jsonic/parser jsonic/tokenizer brag/support) (parse-to-datum (apply-tokenizer-maker make-tokenizer "hi")) |
1 2 3 4 | #lang br (require jsonic/parser jsonic/tokenizer brag/support) (parse-to-datum (apply-tokenizer-maker make-tokenizer "hi\n// comment\n@$ 42 $@")) |
1 2 3 4 5 6 7 8 9 | #lang br (require jsonic/parser jsonic/tokenizer brag/support) (parse-to-datum (apply-tokenizer-maker make-tokenizer #<<DEREK "hi" // comment @$ 42 $@ DEREK )) |
1 2 3 4 | #lang br/quicklang (module reader br (require "reader.rkt") (provide read-syntax)) |
1 2 3 4 5 6 7 8 9 | #lang br/quicklang (require "tokenizer.rkt" "parser.rkt") (define (read-syntax path port) (define parse-tree (parse path (make-tokenizer port))) (define module-datum `(module jsonic-module jsonic/expander ,parse-tree)) (datum->syntax #f module-datum)) (provide read-syntax) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #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) |
1 2 3 4 | #lang brag jsonic-program : (jsonic-char | jsonic-sexp)* jsonic-char : CHAR-TOK jsonic-sexp : SEXP-TOK |