| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -202,22 +202,27 @@ bool YAML::convert<Constant>::decode(const YAML::Node& node, Constant& rhs) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					YAML::Node YAML::convert<Probability>::encode(const Probability& rhs) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					YAML::Node YAML::convert<Property>::encode(const Property& rhs) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    YAML::Node node; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    node.push_back(rhs.probability_); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    node.push_back(rhs.property); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    node.push_back(rhs.value_); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return node; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bool YAML::convert<Probability>::decode(const YAML::Node& node, Probability& rhs) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (!node.IsDefined() || !node["probability"] || !node["value"]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bool YAML::convert<Property>::decode(const YAML::Node& node, Property& rhs) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    if (!node.IsDefined() || !node["property"] || !node["value"]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    rhs.probability_ = node["probability"].as<std::string>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    rhs.value_ = node["value"].as<double>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    rhs.property = node["property"].as<std::string>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        rhs.value_ = node["value"].as<double>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    catch(const std::exception& e) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        rhs.value_str_ = node["value"].as<std::string>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    }    | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -227,7 +232,7 @@ const std::string Configuration::overwrite_identifier_{"; // Overwritten through | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					YamlConfigParseResult YamlConfigParser::parseConfiguration() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        std::vector<Configuration> configuration; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        std::vector<Probability> probabilities; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        std::vector<Property> properties; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        try { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            YAML::Node config = YAML::LoadFile(file_);   | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -250,8 +255,8 @@ YamlConfigParseResult YamlConfigParser::parseConfiguration() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                constants = config["constants"].as<std::vector<Constant>>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (config["probabilities"]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                probabilities = config["probabilities"].as<std::vector<Probability>>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if (config["properties"]) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                properties = config["properties"].as<std::vector<Property>>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					         | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for (auto& label : labels) { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -262,16 +267,16 @@ YamlConfigParseResult YamlConfigParser::parseConfiguration() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for (auto& module : modules) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if (module.overwrite_module) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    Configuration config = Configuration(module.module_text_, module.module_, ConfigType::Module, true, module.module_, {0}, "endmodule"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    Configuration config = Configuration("module " + module.module_text_, "module " + module.module_, ConfigType::Module, true, module.module_, {0}, "endmodule"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    configuration.push_back(config); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    continue; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                for (auto& command : module.commands_) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    Configuration config; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if (!command.guard_.empty() && !command.action_.empty() && command.update_.empty()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        config = Configuration(" " + command.guard_, command.action_, ConfigType::Module, true, module.module_, command.indexes_, "->", false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        config = Configuration(" " + command.guard_, command.action_, ConfigType::GuardOnly, true, module.module_, command.indexes_, "->"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } else if (!command.update_.empty() && !command.action_.empty() && command.guard_.empty()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        config = Configuration( " " + command.update_, command.action_, ConfigType::Module, true, module.module_,  command.indexes_, ";", false); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        config = Configuration( " " + command.update_, command.action_, ConfigType::UpdateOnly, true, module.module_,  command.indexes_, ";"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        config = Configuration(command.createExpression(), command.action_, ConfigType::Module, command.overwrite_, module.module_, command.indexes_);  | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -290,5 +295,5 @@ YamlConfigParseResult YamlConfigParser::parseConfiguration() { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            std::cout << "while parsing configuration " << file_ << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return YamlConfigParseResult(configuration, probabilities); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return YamlConfigParseResult(configuration, properties); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} |