|  | @@ -81,23 +81,7 @@ int Driver::run(void)
 | 
											
												
													
														|  |          return 1;
 |  |          return 1;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      
 |  |      
 | 
											
												
													
														|  | -    std::unique_ptr<qlow::sem::GlobalScope> semClasses = nullptr;
 |  | 
 | 
											
												
													
														|  | -    try {
 |  | 
 | 
											
												
													
														|  | -        semClasses =
 |  | 
 | 
											
												
													
														|  | -            qlow::sem::createFromAst(this->ast);
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -    catch(SemanticError& se) {
 |  | 
 | 
											
												
													
														|  | -        se.print(logger);
 |  | 
 | 
											
												
													
														|  | -        errorOccurred = true;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -    catch(const char* err) {
 |  | 
 | 
											
												
													
														|  | -        reportError(err);
 |  | 
 | 
											
												
													
														|  | -        errorOccurred = true;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -    catch (...) {
 |  | 
 | 
											
												
													
														|  | -        reportError("an unknown error occurred.");
 |  | 
 | 
											
												
													
														|  | -        errorOccurred = true;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | 
 |  | +    errorOccurred = semanticStage();
 | 
											
												
													
														|  |      
 |  |      
 | 
											
												
													
														|  |      if (errorOccurred) {
 |  |      if (errorOccurred) {
 | 
											
												
													
														|  |          logger << "Aborting due to semantic errors." << std::endl;
 |  |          logger << "Aborting due to semantic errors." << std::endl;
 | 
											
										
											
												
													
														|  | @@ -207,6 +191,30 @@ bool Driver::parseStage(void)
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +bool Driver::semanticStage(void)
 | 
											
												
													
														|  | 
 |  | +{
 | 
											
												
													
														|  | 
 |  | +    bool errorOccurred = false;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    try {
 | 
											
												
													
														|  | 
 |  | +        this->semClasses = qlow::sem::createFromAst(this->ast);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    catch(SemanticError& se) {
 | 
											
												
													
														|  | 
 |  | +        se.print(logger);
 | 
											
												
													
														|  | 
 |  | +        errorOccurred = true;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    catch(const char* err) {
 | 
											
												
													
														|  | 
 |  | +        reportError(err);
 | 
											
												
													
														|  | 
 |  | +        errorOccurred = true;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    catch (...) {
 | 
											
												
													
														|  | 
 |  | +        reportError("an unknown error occurred.");
 | 
											
												
													
														|  | 
 |  | +        errorOccurred = true;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    return errorOccurred;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  qlow::ast::Ast Driver::parseFile(FILE* file,
 |  |  qlow::ast::Ast Driver::parseFile(FILE* file,
 | 
											
												
													
														|  |          const std::string& filename)
 |  |          const std::string& filename)
 | 
											
												
													
														|  |  {
 |  |  {
 |