From 41e07b0cc6c8db0eae1e986037d1fe1e6e5c4fe6 Mon Sep 17 00:00:00 2001 From: Jay McCarthy Date: Tue, 19 Mar 2013 08:58:32 -0600 Subject: [PATCH] Removing even/odd reading hack and just protecting parser from eof-ing ports --- collects/datalog/lang/configure-runtime.rkt | 22 ++++++++++----------- collects/racklog/lang/configure-runtime.rkt | 22 ++++++++++----------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/collects/datalog/lang/configure-runtime.rkt b/collects/datalog/lang/configure-runtime.rkt index 25e9ad3f93..eb066a168b 100644 --- a/collects/datalog/lang/configure-runtime.rkt +++ b/collects/datalog/lang/configure-runtime.rkt @@ -1,20 +1,18 @@ #lang racket/base (define (configure data) - ;; (printf "Configuring\n") - (current-read-interaction even-read)) + (current-read-interaction the-read)) (provide configure) (require datalog/parse datalog/private/compiler) -; XXX This is almost certainly wrong. -(define (even-read src ip) - (begin0 - (compile-statement - (parameterize ([current-source-name src]) - (parse-statement ip))) - (current-read-interaction odd-read))) -(define (odd-read src ip) - (current-read-interaction even-read) - eof) +(define (the-read src ip) + (cond + [(or (not (char-ready? ip)) + (eof-object? (peek-char ip))) + eof] + [else + (compile-statement + (parameterize ([current-source-name src]) + (parse-statement ip)))])) diff --git a/collects/racklog/lang/configure-runtime.rkt b/collects/racklog/lang/configure-runtime.rkt index 15e7164b51..8b3de8e3dd 100644 --- a/collects/racklog/lang/configure-runtime.rkt +++ b/collects/racklog/lang/configure-runtime.rkt @@ -1,20 +1,18 @@ #lang racket/base (define (configure data) - ;; (printf "Configuring\n") - (current-read-interaction even-read)) + (current-read-interaction the-read)) (provide configure) (require datalog/parse racklog/lang/compiler) -; XXX This is almost certainly wrong. -(define (even-read src ip) - (begin0 - (compile-statement - (parameterize ([current-source-name src]) - (parse-statement ip))) - (current-read-interaction odd-read))) -(define (odd-read src ip) - (current-read-interaction even-read) - eof) +(define (the-read src ip) + (cond + [(or (not (char-ready? ip)) + (eof-object? (peek-char ip))) + eof] + [else + (compile-statement + (parameterize ([current-source-name src]) + (parse-statement ip)))]))