| 
														
															@@ -91,7 +91,7 @@ while (0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %lex-param   { yyscan_t scanner } 
														 | 
														
														 | 
														
															 %lex-param   { yyscan_t scanner } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %parse-param { yyscan_t scanner } 
														 | 
														
														 | 
														
															 %parse-param { yyscan_t scanner } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %parse-param { qlow::ast::Ast& ast } 
														 | 
														
														 | 
														
															 %parse-param { qlow::ast::Ast& ast } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-%parse-param { const qlow::ast::Parser& parser } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+%parse-param { qlow::ast::Parser& parser } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %define api.prefix {qlow_parser_} 
														 | 
														
														 | 
														
															 %define api.prefix {qlow_parser_} 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -149,6 +149,9 @@ while (0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     qlow::ast::NewArrayExpression* newArrayExpression; 
														 | 
														
														 | 
														
															     qlow::ast::NewArrayExpression* newArrayExpression; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     qlow::ast::CastExpression* castExpression; 
														 | 
														
														 | 
														
															     qlow::ast::CastExpression* castExpression; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    qlow::ast::ImportDeclaration* importDeclaration; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<std::unique_ptr<qlow::ast::ImportDeclaration>>* importList; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const char* cString; 
														 | 
														
														 | 
														
															     const char* cString; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     std::string* string; 
														 | 
														
														 | 
														
															     std::string* string; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     int token; 
														 | 
														
														 | 
														
															     int token; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -159,12 +162,15 @@ while (0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %token <string> INT_LITERAL 
														 | 
														
														 | 
														
															 %token <string> INT_LITERAL 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %token <string> ASTERISK SLASH PLUS MINUS EQUALS NOT_EQUALS AND OR XOR CUSTOM_OPERATOR 
														 | 
														
														 | 
														
															 %token <string> ASTERISK SLASH PLUS MINUS EQUALS NOT_EQUALS AND OR XOR CUSTOM_OPERATOR 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %token <token> TRUE FALSE 
														 | 
														
														 | 
														
															 %token <token> TRUE FALSE 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-%token <token> CLASS STRUCT DO END IF ELSE WHILE RETURN NEW EXTERN AS 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+%token <token> CLASS STRUCT DO END IF ELSE WHILE RETURN NEW AS 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+%token <token> EXTERN IMPORT 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %token <token> NEW_LINE 
														 | 
														
														 | 
														
															 %token <token> NEW_LINE 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %token <token> SEMICOLON COLON COMMA DOT ASSIGN AMPERSAND 
														 | 
														
														 | 
														
															 %token <token> SEMICOLON COLON COMMA DOT ASSIGN AMPERSAND 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %token <token> ROUND_LEFT ROUND_RIGHT SQUARE_LEFT SQUARE_RIGHT 
														 | 
														
														 | 
														
															 %token <token> ROUND_LEFT ROUND_RIGHT SQUARE_LEFT SQUARE_RIGHT 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %token <string> UNEXPECTED_SYMBOL 
														 | 
														
														 | 
														
															 %token <string> UNEXPECTED_SYMBOL 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+%type <importDeclaration> importDeclaration 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+%type <importList> importList 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %type <topLevel> topLevel 
														 | 
														
														 | 
														
															 %type <topLevel> topLevel 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %type <classDefinition> classDefinition 
														 | 
														
														 | 
														
															 %type <classDefinition> classDefinition 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 %type <type> type 
														 | 
														
														 | 
														
															 %type <type> type 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -216,7 +222,9 @@ while (0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /* list of class definitions */ 
														 | 
														
														 | 
														
															 /* list of class definitions */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 topLevel: 
														 | 
														
														 | 
														
															 topLevel: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    /* empty */ { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    importList { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+       parser.addImports(std::move(*$1)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+       delete $1; $1 = nullptr; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															        $$ = * 
														 | 
														
														 | 
														
															        $$ = * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     | 
														 | 
														
														 | 
														
															     | 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -254,6 +262,22 @@ topLevel: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         $3 = nullptr; 
														 | 
														
														 | 
														
															         $3 = nullptr; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     }; 
														 | 
														
														 | 
														
															     }; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+importList: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    /* empty */ { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        $$ = new std::vector<std::unique_ptr<qlow::ast::ImportDeclaration>>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    | 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    importList importDeclaration { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        $$ = $1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        $$->emplace_back($2); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        $2 = nullptr; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    }; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+importDeclaration: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    IMPORT IDENTIFIER { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        $$ = new qlow::ast::ImportDeclaration(std::move(*$2), @2); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        delete $2; $2 = nullptr; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    }; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 classDefinition: 
														 | 
														
														 | 
														
															 classDefinition: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     CLASS IDENTIFIER featureList END { 
														 | 
														
														 | 
														
															     CLASS IDENTIFIER featureList END { 
														 |