|  | @ -2,6 +2,8 @@ | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  | #include <iostream>
 |  |  | #include <iostream>
 | 
		
	
		
			
				|  |  | #include <string>
 |  |  | #include <string>
 | 
		
	
		
			
				|  |  |  |  |  | #include <regex>
 | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  | #include <boost/algorithm/string.hpp>
 |  |  | #include <boost/algorithm/string.hpp>
 | 
		
	
		
			
				|  |  | #include <boost/algorithm/string/predicate.hpp>
 |  |  | #include <boost/algorithm/string/predicate.hpp>
 | 
		
	
	
		
			
				|  | @ -215,7 +217,29 @@ namespace storm { | 
		
	
		
			
				|  |  |                     // Parse labels
 |  |  |                     // Parse labels
 | 
		
	
		
			
				|  |  |                     if (!line.empty()) { |  |  |                     if (!line.empty()) { | 
		
	
		
			
				|  |  |                         std::vector<std::string> labels; |  |  |                         std::vector<std::string> labels; | 
		
	
		
			
				|  |  |                         boost::split(labels, line, boost::is_any_of(" ")); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                         // Labels are separated by whitespace and can optionally be enclosed in quotation marks
 | 
		
	
		
			
				|  |  |  |  |  |                         // Regex for labels with two cases:
 | 
		
	
		
			
				|  |  |  |  |  |                         // * Enclosed in quotation marks: \"([^\"]+?)\"(?=(\s|$|\"))
 | 
		
	
		
			
				|  |  |  |  |  |                         //   - First part matches string enclosed in quotation marks with no quotation mark inbetween (\"([^\"]+?)\")
 | 
		
	
		
			
				|  |  |  |  |  |                         //   - second part is lookahead which ensures that after the matched part either whitespace, end of line or a new quotation mark follows (?=(\s|$|\"))
 | 
		
	
		
			
				|  |  |  |  |  |                         // * Separated by whitespace: [^\s\"]+?(?=(\s|$))
 | 
		
	
		
			
				|  |  |  |  |  |                         //   - First part matches string without whitespace and quotation marks [^\s\"]+?
 | 
		
	
		
			
				|  |  |  |  |  |                         //   - Second part is again lookahead matching whitespace or end of line (?=(\s|$))
 | 
		
	
		
			
				|  |  |  |  |  |                         std::regex labelRegex(R"(\"([^\"]+?)\"(?=(\s|$|\"))|([^\s\"]+?(?=(\s|$))))"); | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |                         // Iterate over matches
 | 
		
	
		
			
				|  |  |  |  |  |                         auto match_begin = std::sregex_iterator(line.begin(), line.end(), labelRegex); | 
		
	
		
			
				|  |  |  |  |  |                         auto match_end = std::sregex_iterator(); | 
		
	
		
			
				|  |  |  |  |  |                         for (std::sregex_iterator i = match_begin; i != match_end; ++i) { | 
		
	
		
			
				|  |  |  |  |  |                             std::smatch match = *i; | 
		
	
		
			
				|  |  |  |  |  |                             // Find matched group and add as label
 | 
		
	
		
			
				|  |  |  |  |  |                             if (match.length(1) > 0) { | 
		
	
		
			
				|  |  |  |  |  |                                 labels.push_back(match.str(1)); | 
		
	
		
			
				|  |  |  |  |  |                             } else { | 
		
	
		
			
				|  |  |  |  |  |                                 labels.push_back(match.str(3)); | 
		
	
		
			
				|  |  |  |  |  |                             } | 
		
	
		
			
				|  |  |  |  |  |                         } | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |                         for (std::string label : labels) { |  |  |                         for (std::string label : labels) { | 
		
	
		
			
				|  |  |                             if (!modelComponents->stateLabeling.containsLabel(label)) { |  |  |                             if (!modelComponents->stateLabeling.containsLabel(label)) { | 
		
	
		
			
				|  |  |                                 modelComponents->stateLabeling.addLabel(label); |  |  |                                 modelComponents->stateLabeling.addLabel(label); | 
		
	
	
		
			
				|  | 
 |