Adding instanceof to Intermediate

svn: r1318
This commit is contained in:
Kathy Gray 2005-11-14 22:35:42 +00:00
parent e27d64ed8d
commit e1a4d090f6
3 changed files with 16 additions and 11 deletions

View File

@ -536,7 +536,10 @@
[(RelationalExpression <= ShiftExpression) [(RelationalExpression <= ShiftExpression)
(make-bin-op #f (build-src 3) '<= $1 $3 (build-src 2 2))] (make-bin-op #f (build-src 3) '<= $1 $3 (build-src 2 2))]
[(RelationalExpression >= ShiftExpression) [(RelationalExpression >= ShiftExpression)
(make-bin-op #f (build-src 3) '>= $1 $3 (build-src 2 2))]) (make-bin-op #f (build-src 3) '>= $1 $3 (build-src 2 2))]
[(RelationalExpression instanceof ReferenceType)
(make-instanceof #f (build-src 3) $1 $3 (build-src 2 2))]
)
(EqualityExpression (EqualityExpression
[(RelationalExpression) $1] [(RelationalExpression) $1]

View File

@ -2137,7 +2137,7 @@
'if-exp-colon getter #f stmt-exp?)) 'if-exp-colon getter #f stmt-exp?))
((and (advanced?) (o-bracket? tok)) ((and (advanced?) (o-bracket? tok))
(parse-expression cur-tok (getter) 'array-acc getter statement-ok? stmt-exp?)) (parse-expression cur-tok (getter) 'array-acc getter statement-ok? stmt-exp?))
((and (advanced?) (instanceof-token? tok)) ((and (or (advanced?) (intermediate?)) (instanceof-token? tok))
(parse-expression cur-tok (getter) 'instanceof getter #f stmt-exp?)) (parse-expression cur-tok (getter) 'instanceof getter #f stmt-exp?))
(else cur-tok)))) (else cur-tok))))
((dot-op-or-end) ((dot-op-or-end)
@ -2168,7 +2168,7 @@
((and (advanced?) (if-exp? tok)) ((and (advanced?) (if-exp? tok))
(parse-expression cur-tok (parse-expression cur-tok (getter) 'start getter #f #f) 'if-exp-colon getter #f stmt-exp?)) (parse-expression cur-tok (parse-expression cur-tok (getter) 'start getter #f #f) 'if-exp-colon getter #f stmt-exp?))
((and (advanced?) (o-bracket? tok)) (parse-expression cur-tok (getter) 'array-acc getter statement-ok? stmt-exp?)) ((and (advanced?) (o-bracket? tok)) (parse-expression cur-tok (getter) 'array-acc getter statement-ok? stmt-exp?))
((and (advanced?) (instanceof-token? tok)) (parse-expression cur-tok (getter) 'instanceof getter #f stmt-exp?)) ((and (or (advanced?) (intermediate?)) (instanceof-token? tok)) (parse-expression cur-tok (getter) 'instanceof getter #f stmt-exp?))
(else cur-tok))) (else cur-tok)))
;Advanced ;Advanced
((array-acc) ((array-acc)
@ -2291,13 +2291,15 @@
;Advanced ;Advanced
((instanceof-array) ((instanceof-array)
(case kind (case kind
((O_BRACKET) ((O_BRACE)
(if (intermediate?)
(parse-error "'[' may not follow the name of a type" start end)
(let ((next (getter))) (let ((next (getter)))
(if (c-bracket? (get-tok next)) (if (c-brace? (get-tok next))
(parse-expression next (getter) 'instanceof-array getter statement-ok? stmt-exp?) (parse-expression next (getter) 'instanceof-array getter statement-ok? stmt-exp?)
(parse-error (format "Array types are of the form type[], expected ] found ~a" (parse-error (format "Array types are of the form type[], expected ] found ~a"
(format-out (get-tok next))) (format-out (get-tok next)))
start (get-end next))))) start (get-end next))))))
(else (parse-expression pre cur-tok 'op-or-end getter statement-ok? stmt-exp?)))) (else (parse-expression pre cur-tok 'op-or-end getter statement-ok? stmt-exp?))))
;Advanced ;Advanced
((if-exp-colon) ((if-exp-colon)

View File

@ -405,7 +405,7 @@
#f)) #f))
(_ tc))) (process-extras (cdr extras) type-recs)) (_ tc))) (process-extras (cdr extras) type-recs))
#;(cons (test-case-test (car extras)) (process-extras (cdr extras) type-recs))) #;(cons (test-case-test (car extras)) (process-extras (cdr extras) type-recs)))
((interact-case? (car extras)) #;((interact-case? (car extras))
(let ((interact-box (interact-case-box (car extras)))) (let ((interact-box (interact-case-box (car extras))))
(send interact-box set-level level) (send interact-box set-level level)
(send interact-box set-records execute-types) (send interact-box set-records execute-types)