diff options
Diffstat (limited to 'cparser')
-rw-r--r-- | cparser/Parser.vy | 6 | ||||
-rw-r--r-- | cparser/pre_parser.mly | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/cparser/Parser.vy b/cparser/Parser.vy index f6bd6a7e..7fe686f1 100644 --- a/cparser/Parser.vy +++ b/cparser/Parser.vy @@ -145,8 +145,10 @@ postfix_expression: { (CAST typ (COMPOUND_INIT (rev' init)), loc) } | loc = LPAREN typ = type_name RPAREN LBRACE init = initializer_list COMMA RBRACE { (CAST typ (COMPOUND_INIT (rev' init)), loc) } -| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA mem = designator_list RPAREN - { (BUILTIN_OFFSETOF typ (rev mem), loc) } +| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA id = OTHER_NAME mems = designator_list RPAREN + { (BUILTIN_OFFSETOF typ ((INFIELD_INIT (fst id))::(rev mems)), loc) } +| loc = BUILTIN_OFFSETOF LPAREN typ = type_name COMMA mem = OTHER_NAME RPAREN + { (BUILTIN_OFFSETOF typ [INFIELD_INIT (fst mem)], loc) } (* Semantic value is in reverse order. *) argument_expression_list: diff --git a/cparser/pre_parser.mly b/cparser/pre_parser.mly index dc9c5319..cdd043a7 100644 --- a/cparser/pre_parser.mly +++ b/cparser/pre_parser.mly @@ -254,7 +254,8 @@ postfix_expression: | postfix_expression LBRACK expression RBRACK | postfix_expression LPAREN argument_expression_list? RPAREN | BUILTIN_VA_ARG LPAREN assignment_expression COMMA type_name RPAREN -| BUILTIN_OFFSETOF LPAREN type_name COMMA designator_list RPAREN +| BUILTIN_OFFSETOF LPAREN type_name COMMA other_identifier RPAREN +| BUILTIN_OFFSETOF LPAREN type_name COMMA other_identifier designator_list RPAREN | postfix_expression DOT other_identifier | postfix_expression PTR other_identifier | postfix_expression INC |