Pārlūkot izejas kodu

Add storage classes to function defs

pull/1/head
Max Brunsfeld pirms 11 gadiem
vecāks
revīzija
845921d558
4 mainītis faili ar 9019 papildinājumiem un 8843 dzēšanām
  1. +6
    -3
      grammar.coffee
  2. +14
    -6
      grammar_test/declarations.txt
  3. +1
    -1
      grammar_test/expressions.txt
  4. +8998
    -8833
      src/parser.c

+ 6
- 3
grammar.coffee Parādīt failu

@ -58,9 +58,7 @@ module.exports =
";") ";")
var_declaration: -> seq( var_declaration: -> seq(
repeat(choice(
keyword("static"),
keyword("extern"))),
optional(@storage_class),
@type, @type,
commaSep1(choice( commaSep1(choice(
@type_expression, @type_expression,
@ -68,6 +66,7 @@ module.exports =
";") ";")
function_declaration: -> seq( function_declaration: -> seq(
optional(@storage_class),
@type, @type,
@type_expression, @type_expression,
"(", @formal_parameters, ")", "(", @formal_parameters, ")",
@ -175,6 +174,10 @@ module.exports =
enum_value: -> seq( enum_value: -> seq(
@identifier, optional(seq("=", @expression))) @identifier, optional(seq("=", @expression)))
storage_class: -> repeat(choice(
keyword("static"),
keyword("extern"))),
field: -> seq(@type, @type_expression) field: -> seq(@type, @type_expression)
var_assignment: -> seq(@type_expression, "=", @expression) var_assignment: -> seq(@type_expression, "=", @expression)

+ 14
- 6
grammar_test/declarations.txt Parādīt failu

@ -127,15 +127,23 @@ Function declarations
============================================ ============================================
int main(int argc, const char **argv); int main(int argc, const char **argv);
static foo bar();
--- ---
(function_declaration
(identifier)
(identifier)
(formal_parameters
(field (identifier) (identifier))
(field (type (identifier)) (pointer_type (pointer_type (identifier))))))
(program
(function_declaration
(identifier)
(identifier)
(formal_parameters
(field (identifier) (identifier))
(field (type (identifier)) (pointer_type (pointer_type (identifier))))))
(function_declaration
(storage_class)
(identifier)
(identifier)
(formal_parameters)))
============================================ ============================================
Function definitions Function definitions

+ 1
- 1
grammar_test/expressions.txt Parādīt failu

@ -108,7 +108,7 @@ int main() {
(function_declaration (identifier) (identifier) (formal_parameters) (function_declaration (identifier) (identifier) (formal_parameters)
(statement_block (statement_block
(var_declaration (identifier) (var_assignment (identifier) (number)))
(var_declaration (storage_class) (identifier) (var_assignment (identifier) (number)))
(expression_statement (assignment (identifier) (assignment (deref (identifier)) (number)))) (expression_statement (assignment (identifier) (assignment (deref (identifier)) (number))))
(expression_statement (assignment (field_access (identifier) (identifier)) (number))) (expression_statement (assignment (field_access (identifier) (identifier)) (number)))
(expression_statement (assignment (deref_field_access (identifier) (identifier)) (number))))) (expression_statement (assignment (deref_field_access (identifier) (identifier)) (number)))))

+ 8998
- 8833
src/parser.c
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


Notiek ielāde…
Atcelt
Saglabāt