fixed cast parsing bug
i hope casts weren't at a different precedence level for a reason
This commit is contained in:
parent
be9a3b4bd5
commit
04c5e1af8a
3 changed files with 3 additions and 8 deletions
|
@ -25,8 +25,7 @@
|
|||
; b << >>
|
||||
; c + -
|
||||
; d * / %
|
||||
; d8 cast
|
||||
; e sizeof, unary prefixes ++ -- & * + - ~ !
|
||||
; e casts, sizeof, unary prefixes ++ -- & * + - ~ !
|
||||
; f . -> () [] postfix ++ --
|
||||
; highest
|
||||
; NB: for equal precedence, operators are applied left-to-right except for assignment operators (precedence 2)
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
/* long b; */
|
||||
/* } x1[] = {0x1234567890, 1ul<<60|1ul<<3, 77}; */
|
||||
/* int y1 = 0x12345678; */
|
||||
typedef int R[*(int*)3];
|
||||
typedef int R[sizeof *(int*)"hello"];
|
||||
|
||||
/* struct { */
|
||||
/* int x[2], y; */
|
||||
|
|
|
@ -1619,11 +1619,7 @@ function parse_expression
|
|||
*4type = type_create_pointer(*4a)
|
||||
return out
|
||||
:unary_dereference
|
||||
print_type(*4a)
|
||||
putc(10)
|
||||
type_decay_array_to_pointer(*4a)
|
||||
print_type(*4a)
|
||||
putc(10)
|
||||
; @TODO : dereferencing a function (annoyingly, p is the same as *p for function pointers)
|
||||
if *1p != TYPE_POINTER goto unary_bad_type
|
||||
*4type = *4a + 1
|
||||
|
@ -2574,7 +2570,7 @@ function operator_precedence
|
|||
token += 16
|
||||
b = token_is_type(token)
|
||||
if b == 0 goto return_0xffff
|
||||
goto return_0xd8 ; it's a cast
|
||||
goto return_0xe0 ; it's a cast
|
||||
|
||||
:figre_out_rparen_arity
|
||||
; given that the token before this one is a right-parenthesis, figure out if
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue