Parcourir la source

Fix error in sizeof expressions

pull/1/head
Max Brunsfeld il y a 11 ans
Parent
révision
6775e737a6
3 fichiers modifiés avec 37285 ajouts et 35688 suppressions
  1. +2
    -1
      grammar.coffee
  2. +20
    -0
      grammar_test/expressions.txt
  3. +37263
    -35687
      src/parser.c

+ 2
- 1
grammar.coffee Voir le fichier

@ -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 Voir le fichier

@ -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
Fichier diff supprimé car celui-ci est trop grand
Voir le fichier


Chargement…
Annuler
Enregistrer