소스 검색

Add storage classes to function defs

pull/1/head
Max Brunsfeld 11 년 전
부모
커밋
845921d558
4개의 변경된 파일9019개의 추가작업 그리고 8843개의 파일을 삭제
  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 파일 보기

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

+ 14
- 6
grammar_test/declarations.txt 파일 보기

@ -127,15 +127,23 @@ Function declarations
============================================
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

+ 1
- 1
grammar_test/expressions.txt 파일 보기

@ -108,7 +108,7 @@ int main() {
(function_declaration (identifier) (identifier) (formal_parameters)
(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 (field_access (identifier) (identifier)) (number)))
(expression_statement (assignment (deref_field_access (identifier) (identifier)) (number)))))

+ 8998
- 8833
src/parser.c
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
파일 보기


불러오는 중...
취소
저장