Skip to content

Commit

Permalink
give an error for the ambiguous syntax "let x = 1 y = 2 ..."
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffBezanson committed Jun 14, 2013
1 parent eefbc69 commit 049bf7b
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions src/julia-parser.scm
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@
(begin
(if (not (or (eof-object? t) (eqv? t #\newline) (memv #\, ops)
(memv t closers)))
(error "extra token after end of expression"))
(error (string "extra token \"" t "\" after end of expression")))
(if (or (null? ex) (pair? (cdr ex)) (not first?))
;; () => (head)
;; (ex2 ex1) => (head ex1 ex2)
Expand Down Expand Up @@ -555,7 +555,7 @@
;; check for unparsed junk after an expression
(let ((t (peek-token s)))
(if (not (or (eof-object? t) (eqv? t #\newline) (eq? t #f)))
(error "extra token after end of expression")))
(error (string "extra token \"" t "\" after end of expression"))))
ex))

(define (parse-eq s)
Expand Down Expand Up @@ -897,13 +897,15 @@
((else) (list 'if test then (parse-resword s 'begin)))
(else (error (string "unexpected " nxt))))))
((let)
(let* ((binds (if (memv (peek-token s) '(#\newline #\;))
(begin (take-token s)
'())
(parse-comma-separated-assignments s)))
(ex (parse-block s)))
(expect-end s)
`(let ,ex ,@binds)))
(let ((binds (if (memv (peek-token s) '(#\newline #\;))
'()
(parse-comma-separated-assignments s))))
(if (not (or (eof-object? (peek-token s))
(memv (peek-token s) '(#\newline #\; end))))
(error "let variables should end in ; or newline"))
(let ((ex (parse-block s)))
(expect-end s)
`(let ,ex ,@binds))))
((global local)
(let* ((const (and (eq? (peek-token s) 'const)
(take-token s)))
Expand Down

0 comments on commit 049bf7b

Please sign in to comment.