Skip to content

Commit

Permalink
handle multiple assignment case with one variable and one right side
Browse files Browse the repository at this point in the history
  • Loading branch information
kazzmir committed Feb 18, 2011
1 parent b139eb0 commit 78b26cd
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions ruby/main.rkt
Expand Up @@ -64,6 +64,8 @@
(send String new (format "Range ~a ~a"
(convert-to-string start)
(convert-to-string end))))
(define/public (to_a block)
(send Array new #f (for/list ([i (in-range start end)]) i)))
(super-new)
))))

Expand Down Expand Up @@ -733,7 +735,10 @@
(with-syntax ([(set ...)
(syntax-case #'right (&Mrhs)
[(&Mrhs (single-right ...) rest-right)
(raise-syntax-error 'assignment "can't handle mrhs yet")]
(if (and (null? (syntax->list #'(single ...)))
(null? (syntax->list #'(single-right ...))))
#'()
(raise-syntax-error 'assignment "can't handle mrhs yet"))]
[else
(for/list ([item (syntax->list #'(single ...))]
[index (in-naturals)])
Expand All @@ -746,7 +751,10 @@
[rest*
(syntax-case #'right (&Mrhs)
[(&Mrhs (single-right ...) rest-right)
(raise-syntax-error 'assignment "can't handle mrhs yet")]
(with-syntax ([var (variable #'rest)])
(if (bound? #'var)
#'(set! var rest-right)
#'(define var rest-right)))]
[else
(if (syntax-e #'rest)
(with-syntax ([size (length (syntax->list #'(single ...)))]
Expand All @@ -759,14 +767,6 @@
set ...
rest*
continue ...))])]
[(&Assignment lhs expr)
(with-syntax ((var (variable #'lhs)))
(if (bound? #'var)
#'(begin (set! var expr)
var)
#'(let ((var expr))
var
continue ...)))]
[(&Assignment (&Array-lookup object start end)
expression)
(with-syntax ([var (variable #'object)])
Expand All @@ -775,6 +775,14 @@
(send var splice start end expression)
continue ...)
(raise-syntax-error "~a is unbound" #'var)))]
[(&Assignment lhs expr)
(with-syntax ((var (variable #'lhs)))
(if (bound? #'var)
#'(begin (set! var expr)
var)
#'(let ((var expr))
var
continue ...)))]
[_ #'(begin statement continue ...)])))

(syntax-case stx ()
Expand Down

0 comments on commit 78b26cd

Please sign in to comment.