arithmetic: Port to Mes.
* gash/arithmetic.scm (define-module): Import SRFI 14. * gash/eval.scm (eval-arithmetic): New procedure. (word->qword): Use it to abstract away the differences in 'eval' between Guile and Mes.
This commit is contained in:
parent
2b44788598
commit
1b5ba1e9ec
|
@ -21,6 +21,7 @@
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
#:use-module (ice-9 receive)
|
#:use-module (ice-9 receive)
|
||||||
#:use-module (srfi srfi-1)
|
#:use-module (srfi srfi-1)
|
||||||
|
#:use-module (srfi srfi-14)
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
#:use-module (system base lalr)
|
#:use-module (system base lalr)
|
||||||
#:export (read-arithmetic))
|
#:export (read-arithmetic))
|
||||||
|
|
|
@ -36,6 +36,17 @@
|
||||||
;;;
|
;;;
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
|
(cond-expand
|
||||||
|
(mes
|
||||||
|
(define (eval-arithmetic expr)
|
||||||
|
(eval `(begin (number->string ,expr))
|
||||||
|
(current-environment))))
|
||||||
|
(else
|
||||||
|
(define (eval-arithmetic expr)
|
||||||
|
(eval `(begin (use-modules (gash environment))
|
||||||
|
(number->string ,expr))
|
||||||
|
(interaction-environment)))))
|
||||||
|
|
||||||
(define eval-cmd-sub
|
(define eval-cmd-sub
|
||||||
(make-parameter (lambda (exps) (throw 'eval-cmd-sub-unset))))
|
(make-parameter (lambda (exps) (throw 'eval-cmd-sub-unset))))
|
||||||
|
|
||||||
|
@ -55,9 +66,8 @@ and arithmetic substitions."
|
||||||
((eval-cmd-sub) exps))
|
((eval-cmd-sub) exps))
|
||||||
(('<sh-arithmetic> word)
|
(('<sh-arithmetic> word)
|
||||||
(let* ((arithmetic (expand-word word #:output 'string))
|
(let* ((arithmetic (expand-word word #:output 'string))
|
||||||
(expr `(begin (use-modules (gash environment))
|
(expr (read-arithmetic arithmetic)))
|
||||||
(number->string ,(read-arithmetic arithmetic)))))
|
(eval-arithmetic expr)))
|
||||||
(eval expr (interaction-environment))))
|
|
||||||
(('<sh-ref> name)
|
(('<sh-ref> name)
|
||||||
(parameter-ref name ""))
|
(parameter-ref name ""))
|
||||||
(('<sh-ref-or> name default)
|
(('<sh-ref-or> name default)
|
||||||
|
|
Loading…
Reference in New Issue