Browse Source

Improvements in parser code comment.

Marco Bambini 8 years ago
parent
commit
35801318db
1 changed files with 9 additions and 5 deletions
  1. 9 5
      src/compiler/gravity_parser.c

+ 9 - 5
src/compiler/gravity_parser.c

@@ -20,11 +20,11 @@
 typedef marray_t(gravity_lexer_t*)		lexer_r;
 
 struct gravity_parser_t {
-	lexer_r								*lexer;
-	gnode_r                             *declarations;
-	gnode_r								*statements;
-	gravity_delegate_t					*delegate;
-    gravity_hash_t                      *meta;
+	lexer_r								*lexer;             // stack of lexers (stack used in #include statements)
+	gnode_r                             *declarations;      // used to keep track of nodes hierarchy
+    gnode_r								*statements;        // used to build AST
+	gravity_delegate_t					*delegate;          // compiler delegate
+    gravity_hash_t                      *meta;              // current node meta (if any)
 	
 	double								time;
 	uint32_t							nerrors;
@@ -2572,7 +2572,11 @@ void gravity_parser_free (gravity_parser_t *parser) {
 		mem_free(parser->lexer);
 	}
 	
+    // parser->declarations is used to keep track of nodes hierarchy and it contains pointers to
+    // parser->statements nodes so there is no need to free it using node_array_free because nodes
+    // are freed when AST (parser->statements) is freed
 	if (parser->declarations) marray_destroy(*parser->declarations);
+    
 	// parser->statements is returned from gravity_parser_run
 	// and must be deallocated using gnode_free