PasteRack.org | ||
Paste # 12889 | ||
2025-01-23 22:55:03 | ||
Fork as a new paste. | ||
Paste viewed 359 times. | ||
Tweet | ||
Embed: | ||
#lang racket (require parsack) (module+ test (require (for-syntax syntax/parse) rackunit) (define-syntax (check-parse stx) (syntax-parse stx [(_ (_ p inp) expected) (syntax/loc #'p (check-equal? (parse-result p inp) expected))])) ) (define $p_number (λ (in) (define-values (r c pos) (port-next-location in)) (define byte-pos (file-position in)) (define n (read in)) (cond [(number? n) (Consumed (Ok n))] [else (file-position in byte-pos) ; backtrack (set-port-next-location! in r c pos) (Empty (Error))]))) (define $p_arithmetic-operator (oneOf "+-/*") ) (define $p_binary-numeric (parser-seq $p_binary-numeric (~ $spaces) $p_arithmetic-operator (~ $spaces) $p_binary-numeric )) (define $p_numeric (parser-compose (<or> (try $p_binary-numeric) $p_number)) ) (module+ test (check-parse (parse $p_numeric "1") (list 1)) )
=>
standard-module-name-resolver: collection not found for module path: parsack collection: "parsack" in collection directories: /home/pasterack/.local/share/racket/8.8/collects /home/pasterack/racket88/collects/ ... [179 additional linked and package directories] context...: /home/pasterack/racket88/collects/racket/require-transform.rkt:266:2: expand-import /home/pasterack/racket88/collects/racket/private/reqprov.rkt:648:16 /home/pasterack/racket88/collects/racket/private/reqprov.rkt:646:2: filter-by-mode /home/pasterack/racket88/collects/racket/require-transform.rkt:266:2: expand-import /home/pasterack/racket88/collects/racket/private/reqprov.rkt:287:21: try-next /home/pasterack/racket88/collects/racket/private/reqprov.rkt:401:21: try-next /home/pasterack/racket88/collects/racket/private/reqprov.rkt:258:2 /home/pasterack/racket88/collects/syntax/wrap-modbeg.rkt:46:4 /home/pasterack/racket88/share/pkgs/scribble-lib/scribble/run.rkt:175:26: go .../private/map.rkt:40:19: loop .../racket/cmdline.rkt:191:51 body of "/home/pasterack/racket88/share/pkgs/scribble-lib/scribble/run.rkt"