From d2630cd78f4ba6d6052ecb261ca4ef8d66fdd6d3 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Wed, 13 Mar 2013 08:48:50 -0500 Subject: [PATCH] fix readtable composition in #2d reader original commit: 6914451426194ed7e334d302d35f95d0f5ce1b35 --- collects/unstable/2d/private/readtable.rkt | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/collects/unstable/2d/private/readtable.rkt b/collects/unstable/2d/private/readtable.rkt index 0c10dd8..7765517 100644 --- a/collects/unstable/2d/private/readtable.rkt +++ b/collects/unstable/2d/private/readtable.rkt @@ -23,13 +23,13 @@ example uses: (provide make-2d-readtable) (define (make-2d-readtable) - (make-readtable - #f + (define previous-readtable (current-readtable)) + (make-readtable + previous-readtable #\2 - 'dispatch-macro + 'dispatch-macro (case-lambda [(char port) - (define previous-readtable (current-readtable)) (define-values (line col pos) (port-next-location port)) ;; the "-2"s here are because the initial line and column @@ -40,12 +40,10 @@ example uses: (and pos (- pos 2)) read/recursive previous-readtable)] [(char port source _line _col _pos) - (define previous-readtable (current-readtable)) (dispatch-proc char port source _line _col _pos (λ (a b c) (read-syntax/recursive source a b c)) previous-readtable)]))) - (define (dispatch-proc char port source _line _col _pos /recursive previous-readtable) (define next-char (peek-char port)) (cond @@ -109,7 +107,7 @@ example uses: `[,(sort (set->list set-of-indicies) compare/xy) ,@(read-subparts source scratch-port initial-space-count table-column-breaks heights set-of-indicies - previous-readtable /recursive)]))] + /recursive)]))] [else (/recursive (input-port-append #f (open-input-string "#2") port) @@ -119,7 +117,7 @@ example uses: (define (read-subparts source scratch-port initial-space-count table-column-breaks heights lhs - previous-readtable /recursive) + /recursive) (with-handlers (#; [exn:fail:read? (λ (exn) @@ -136,7 +134,7 @@ example uses: source initial-space-count table-column-breaks heights lhs))))]) (let loop () - (define o (/recursive scratch-port #f previous-readtable)) + (define o (/recursive scratch-port #f (current-readtable))) (cond [(eof-object? o) '()] [else (cons o (loop))]))))