summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/language/python/spec.scm27
1 files changed, 18 insertions, 9 deletions
diff --git a/modules/language/python/spec.scm b/modules/language/python/spec.scm
index 46b46e8..be7673e 100644
--- a/modules/language/python/spec.scm
+++ b/modules/language/python/spec.scm
@@ -1,6 +1,7 @@
(define-module (language python spec)
#:use-module (language python guilemod)
- #:use-module (parser stis-parser lang python3-parser)
+ #:use-module ((parser stis-parser lang python3-parser)
+ #:prefix python-parser:)
#:use-module ((language python module python) #:select ())
#:use-module (language python compile)
#:use-module (language python completer)
@@ -29,13 +30,21 @@
(close port)))
(car (reverse x)))
-(define (c int x) (pr (comp int (pr (p (pr x))))))
-(define (cc int port x)
- (if (string-null? x)
+(define (logging-compile int? exp)
+ "Compile the Python expression EXP while optionally logging
+intermediate values."
+ (pr (comp int? (pr (python-parser:p (pr exp))))))
+
+(define (read-or-compile int? port exp)
+ "Compile the Python expression EXP or read a new one from PORT."
+ (if (string-null? exp)
(read port)
- (c int x)))
+ (logging-compile int? exp)))
-(define (e x) (eval (c #t x) (current-module)))
+(define (python-eval exp)
+ "Evaluate the Python expression EXP."
+ (eval (logging-compile #t exp)
+ (current-module)))
(define (ignore-errors proc)
"Run PROC and ignore all errors."
@@ -56,12 +65,12 @@
(define python-reader-wrap
(lambda (port env)
(if (int)
- (cc #t port (read-line port))
+ (read-or-compile #t port (read-line port))
(let lp ((port2 (hash-ref mapper port)))
(if port2
(read port2)
(let ((port2
- (open-input-string (cc #f port (read-string port)))))
+ (open-input-string (read-or-compile #f port (read-string port)))))
(use-modules (language python guilemod))
(in)
(hash-set! mapper port port2)
@@ -70,7 +79,7 @@
(ignore-errors
(lambda ()
(set! (@@ (ice-9 readline) *readline-completion-function*)
- (complete-python e))))
+ (complete-python python-eval))))
(define-language python
#:title "python"