add more operators
svn: r17773
This commit is contained in:
parent
e0fff18e68
commit
bee5af120b
|
@ -29,7 +29,10 @@
|
||||||
|
|
||||||
(define-literal honu-return)
|
(define-literal honu-return)
|
||||||
(define-literal semicolon)
|
(define-literal semicolon)
|
||||||
(define-literal honu-+ honu-* honu-/ honu--)
|
(define-literal honu-+ honu-* honu-/ honu-- honu-|| honu-%
|
||||||
|
honu-= honu-+= honu--= honu-*= honu-/= honu-%=
|
||||||
|
honu-&= honu-^= honu-\|= honu-<<= honu->>= honu->>>=
|
||||||
|
honu->> honu-<< honu->>> honu-< honu-> honu-<= honu->=)
|
||||||
|
|
||||||
;; (define-syntax (\; stx) (raise-syntax-error '\; "out of context" stx))
|
;; (define-syntax (\; stx) (raise-syntax-error '\; "out of context" stx))
|
||||||
|
|
||||||
|
@ -428,16 +431,36 @@ x(2)
|
||||||
#:with result #'e.result])
|
#:with result #'e.result])
|
||||||
|
|
||||||
|
|
||||||
|
;; infix operators in the appropriate precedence level
|
||||||
|
;; things defined lower in the table have a higher precedence.
|
||||||
|
;; the first set of operators is `expression-1'
|
||||||
(splicing-let-syntax ([sl (make-rename-transformer #'syntax-lambda)])
|
(splicing-let-syntax ([sl (make-rename-transformer #'syntax-lambda)])
|
||||||
(infix-operators expression-1 expression-last
|
(infix-operators expression-1 expression-last
|
||||||
([honu-+ (sl (left right)
|
([honu-= (sl (left right) #'(= left right))]
|
||||||
#'(+ left right))]
|
[honu-+= (sl (left right) #'(+ left right))]
|
||||||
[honu-- (sl (left right)
|
[honu--= (sl (left right) #'(- left right))]
|
||||||
#'(- left right))])
|
[honu-*= (sl (left right) #'(* left right))]
|
||||||
([honu-* (sl (left right)
|
[honu-/= (sl (left right) #'(/ left right))]
|
||||||
#'(* left right))]
|
[honu-%= (sl (left right) #'(modulo left right))]
|
||||||
[honu-/ (sl (left right)
|
[honu-&= (sl (left right) #'(+ left right))]
|
||||||
#'(/ left right))])))
|
[honu-^= (sl (left right) #'(+ left right))]
|
||||||
|
[honu-\|= (sl (left right) #'(+ left right))]
|
||||||
|
[honu-<<= (sl (left right) #'(+ left right))]
|
||||||
|
[honu->>= (sl (left right) #'(+ left right))]
|
||||||
|
[honu->>>= (sl (left right) #'(+ left right))])
|
||||||
|
([honu-|| (sl (left right) #'(+ left right))])
|
||||||
|
([honu->> (sl (left right) #'(+ left right))]
|
||||||
|
[honu-<< (sl (left right) #'(+ left right))]
|
||||||
|
[honu->>> (sl (left right) #'(+ left right))]
|
||||||
|
[honu-< (sl (left right) #'(< left right))]
|
||||||
|
[honu-> (sl (left right) #'(> left right))]
|
||||||
|
[honu-<= (sl (left right) #'(<= left right))]
|
||||||
|
[honu->= (sl (left right) #'(>= left right))])
|
||||||
|
([honu-+ (sl (left right) #'(+ left right))]
|
||||||
|
[honu-- (sl (left right) #'(- left right))])
|
||||||
|
([honu-* (sl (left right) #'(* left right))]
|
||||||
|
[honu-% (sl (left right) #'(modulo left right))]
|
||||||
|
[honu-/ (sl (left right) #'(/ left right))])))
|
||||||
|
|
||||||
;; (printf "~a\n" (syntax-class-parse function stx))
|
;; (printf "~a\n" (syntax-class-parse function stx))
|
||||||
(syntax-parse stx
|
(syntax-parse stx
|
||||||
|
|
Loading…
Reference in New Issue
Block a user