diff --git a/collects/profj/parsers/advanced-parser.ss b/collects/profj/parsers/advanced-parser.ss index 12c1ca4fe0..577672e5ca 100644 --- a/collects/profj/parsers/advanced-parser.ss +++ b/collects/profj/parsers/advanced-parser.ss @@ -676,7 +676,13 @@ (if (access? $2) (make-cast #f (build-src 4) (make-type-spec (access->name $2) 0 (build-src 2 2)) $4) - (error 'bad-cast))] + (raise-read-error "An operator is needed to combine these expressions." + (file-path) + (position-line $1-start-pos) + (position-col $1-start-pos) + (+ (position-offset $1-start-pos) (interactions-offset)) + (- (position-offset $4-end-pos) + (position-offset $1-start-pos))))] ;; GJ - Not sure if this is in spec or not. ;;[(O_PAREN Name < ReferenceTypeList1 C_PAREN UnaryExpressionNotPlusMinus) #t] [(O_PAREN Name Dims C_PAREN UnaryExpressionNotPlusMinus) diff --git a/collects/profj/parsers/full-parser.ss b/collects/profj/parsers/full-parser.ss index f32d766840..8c34527509 100644 --- a/collects/profj/parsers/full-parser.ss +++ b/collects/profj/parsers/full-parser.ss @@ -852,7 +852,13 @@ (if (access? $2) (make-cast #f (build-src 4) (make-type-spec (access->name $2) 0 (build-src 2 2)) $4) - (error 'bad-cast))] + (raise-read-error "An operator is needed to combine these expressions." + (file-path) + (position-line $1-start-pos) + (position-col $1-start-pos) + (+ (position-offset $1-start-pos) (interactions-offset)) + (- (position-offset $4-end-pos) + (position-offset $1-start-pos))))] [(O_PAREN Name Dims C_PAREN UnaryExpressionNotPlusMinus) (make-cast #f (build-src 4) (make-type-spec $2 $3 (build-src 2 3)) diff --git a/collects/profj/parsers/intermediate-parser.ss b/collects/profj/parsers/intermediate-parser.ss index 38c83b178e..6075735bd5 100644 --- a/collects/profj/parsers/intermediate-parser.ss +++ b/collects/profj/parsers/intermediate-parser.ss @@ -499,7 +499,13 @@ (if (access? $2) (make-cast #f (build-src 4) (make-type-spec (access->name $2) 0 (build-src 2 2)) $4) - (error 'bad-cast))]) + (raise-read-error "An operator is needed to combine these expressions." + (file-path) + (position-line $1-start-pos) + (position-col $1-start-pos) + (+ (position-offset $1-start-pos) (interactions-offset)) + (- (position-offset $4-end-pos) + (position-offset $1-start-pos))))]) (MultiplicativeExpression [(UnaryExpression) $1] diff --git a/collects/profj/parsers/parse-error.ss b/collects/profj/parsers/parse-error.ss index aa37cd6483..aa497bf1bd 100644 --- a/collects/profj/parsers/parse-error.ss +++ b/collects/profj/parsers/parse-error.ss @@ -11,6 +11,8 @@ find-intermediate-error find-intermediate-error-interactions find-intermediate-error-expression find-intermediate-error-type find-advanced-error find-advanced-error-interactions find-advanced-error-expression find-advanced-error-type) + ;(print-struct #t) + (define level (make-parameter 'beginner)) (define (beginner?) (eq? (level) 'beginner)) (define (intermediate?) (eq? (level) 'intermediate)) @@ -1538,6 +1540,7 @@ (end (get-end cur-tok)) (ps (if (null? pre) null (get-start pre))) (pe (if (null? pre) null (get-end pre)))) + ;(printf "parse-statement: ~a pre ~a cur-tok ~a ~n" state pre cur-tok) (case state ((start) (case kind