Sfoglia il codice sorgente

Fix error in sizeof expressions

pull/1/head
Max Brunsfeld 11 anni fa
parent
commit
6775e737a6
3 ha cambiato i file con 37285 aggiunte e 35688 eliminazioni
  1. +2
    -1
      grammar.coffee
  2. +20
    -0
      grammar_test/expressions.txt
  3. +37263
    -35687
      src/parser.c

+ 2
- 1
grammar.coffee Vedi File

@ -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, "]"))

+ 20
- 0
grammar_test/expressions.txt Vedi File

@ -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
============================================

+ 37263
- 35687
src/parser.c
File diff soppresso perché troppo grande
Vedi File


Caricamento…
Annulla
Salva