Fix error in sizeof expressions

edge_only_predecessors
Max Brunsfeld 2015-03-09 19:22:41 +07:00
parent 87ad2e9c69
commit 6775e737a6
3 changed files with 37285 additions and 35688 deletions

@ -391,8 +391,9 @@ module.exports =
cast_expression: ->
prec(PREC.cast, seq("(", @type_name, ")", @expression))
sizeof_expression: ->
sizeof_expression: -> choice(
prefix(PREC.sizeof, @expression, keyword("sizeof"))
prefix(PREC.sizeof, seq("(", @type_name, ")"), keyword("sizeof")))
subscript_expression: ->
prec(PREC.subscript, seq(@expression, "[", @expression, "]"))

@ -195,6 +195,26 @@ int main() {
(type_name (type_qualifier) (identifier) (pointer))
(identifier))))))
============================================
Sizeof expressions
============================================
int main() {
sizeof x.a;
sizeof(x.a);
sizeof(const char *);
}
---
(function_definition
(identifier)
(direct_declarator (identifier))
(compound_statement
(expression_statement (sizeof_expression (field_expression (identifier) (identifier))))
(expression_statement (sizeof_expression (expression (field_expression (identifier) (identifier)))))
(expression_statement (sizeof_expression (type_name (type_qualifier) (identifier) (pointer))))))
============================================
Compound literals
============================================

File diff suppressed because it is too large Load Diff