1 2 3 | zip-code : digit{5} ["-" digit{4}] digit : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
1 2 3 4 5 6 7 8 9 | zip-code : beginning [middle] end beginning : digit digit middle : end "-" digit end : beginning digit digit : number | zero number : odd | even odd : "1" | "3" | "5" | "7" | "9" even : "2" | "4" | "6" | "8" zero : "0" |
1 2 3 4 | #lang brag zip-code : digit{5} ["-" digit{4}] digit : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
1 | (parse-to-datum "01234-5678") |
1 | '(zip-code (digit "0") (digit "1") (digit "2") (digit "3") (digit "4") "-" (digit "5") (digit "6") (digit "7") (digit "8")) |
1 2 3 4 | #lang brag zip-code : @digit{5} [/"-" digit{4}] ; splice and cut digit : "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
1 | (parse-to-datum "01234-5678") |
1 | '(zip-code "0" "1" "2" "3" "4" (digit "5") (digit "6") (digit "7") (digit "8")) |
1 2 3 | #lang brag foo : "x" bar bar : foo |
1 2 3 4 | #lang brag top : foo | bar foo : "x" bar : "x" |
1 2 | #lang tacogram ##$%#$%#$#$#$$##$%#$%#$#$#$$##$%#$#$#$%#$$##$#$#$%#$%%$#%#$%#$#$%%$##$#$%%#$%%$##$#$%%#$%%$#%%%%#$%%$##$#$#$#$#$%#$$#%%%#$%%%$#%%%%#$%%$##$%#$#$%%%$##$#$%%#$%%$##$#$%#$#$%%$##$%#$#$#$%#$$##$%#$%#$#$#$$##$#$#$%#$%#$$#%%#$%#$%#$$##$#$#$#$#$%#$$#%#$#$#$%%#$$##$#$#$#$#$%#$$##$#$#$%#$%#$$##$%#$%#$%#$$##$#$#$#$#$%#$$##$%#$#$%%#$$##$#$#$#$#$%#$$##$#$#$%#$%#$$#%#$%%#$%#$$##$#$#$#$#$%#$$##$#$#$%%%%$#%#$#$%#$%#$$#%#$#$%#$%#$$#%#$#$%#$%#$$ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #lang br/quicklang (require "grammar.rkt") (module+ reader (provide read-syntax)) (define (tokenize ip) (for/list ([tok (in-port read-char ip)]) tok)) (define (parse src toks) (define parse-tree-datum (parse-to-datum toks)) (for/list ([leaf (in-list (cdr parse-tree-datum))]) (integer->char (for/sum ([val (in-list (cdr leaf))] [power (in-naturals)] #:when (equal? val '(taco))) (expt 2 power))))) (define (read-syntax src ip) (define toks (tokenize ip)) (define parse-tree (parse src toks)) (strip-context (with-syntax ([PT parse-tree]) #'(module tacogram-mod tacogram PT)))) (define-macro (mb PT) #'(#%module-begin (display (list->string 'PT)))) (provide (rename-out [mb #%module-begin])) |
1 2 3 | #lang brag ;; ··· |