|  |  | @ -24,6 +24,9 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |              | 
			
		
	
		
			
				
					|  |  |  |             if(firstQuots == std::string::npos) { | 
			
		
	
		
			
				
					|  |  |  |                 return name; | 
			
		
	
		
			
				
					|  |  |  |             } else if (secondQuots ==std::string::npos) { | 
			
		
	
		
			
				
					|  |  |  |                 std::cerr << "No ending quotation mark found in " << name <<std::endl; | 
			
		
	
		
			
				
					|  |  |  |                 throw storm::exceptions::FileIoException(); | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 return name.substr(firstQuots+1,secondQuots-1); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
	
		
			
				
					|  |  | @ -32,11 +35,8 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |         bool DFTGalileoParser::readFile(const std::string& filename) { | 
			
		
	
		
			
				
					|  |  |  |             // constants
 | 
			
		
	
		
			
				
					|  |  |  |             std::string topleveltoken = "toplevel"; | 
			
		
	
		
			
				
					|  |  |  |              | 
			
		
	
		
			
				
					|  |  |  |              | 
			
		
	
		
			
				
					|  |  |  |             std::string toplevelId; | 
			
		
	
		
			
				
					|  |  |  |             | 
			
		
	
		
			
				
					|  |  |  |              | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             std::ifstream file; | 
			
		
	
		
			
				
					|  |  |  |             file.exceptions ( std::ifstream::failbit ); | 
			
		
	
		
			
				
					|  |  |  |             try { | 
			
		
	
	
		
			
				
					|  |  | @ -48,19 +48,25 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             file.exceptions( 0 ); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             std::string line; | 
			
		
	
		
			
				
					|  |  |  |             bool generalSuccess = true; | 
			
		
	
		
			
				
					|  |  |  |             while(std::getline(file, line)) | 
			
		
	
		
			
				
					|  |  |  |             { | 
			
		
	
		
			
				
					|  |  |  |                 bool success = true; | 
			
		
	
		
			
				
					|  |  |  |                 std::cout << line << std::endl; | 
			
		
	
		
			
				
					|  |  |  |                 size_t commentstarts = line.find("//"); | 
			
		
	
		
			
				
					|  |  |  |                 line = line.substr(0, commentstarts); | 
			
		
	
		
			
				
					|  |  |  |                 size_t firstsemicolon = line.find(";"); | 
			
		
	
		
			
				
					|  |  |  |                 line = line.substr(0, firstsemicolon); | 
			
		
	
		
			
				
					|  |  |  |                 if (line.find_first_not_of(' ') == std::string::npos) | 
			
		
	
		
			
				
					|  |  |  |                 { | 
			
		
	
		
			
				
					|  |  |  |                     // Only whitespace
 | 
			
		
	
		
			
				
					|  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 // Top level indicator.
 | 
			
		
	
		
			
				
					|  |  |  |                 if(boost::starts_with(line, topleveltoken)) { | 
			
		
	
		
			
				
					|  |  |  |                     toplevelId = stripQuotsFromName(line.substr(topleveltoken.size()+1)); | 
			
		
	
		
			
				
					|  |  |  |                     toplevelId = stripQuotsFromName(line.substr(topleveltoken.size() + 1)); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 else | 
			
		
	
		
			
				
					|  |  |  |                 { | 
			
		
	
	
		
			
				
					|  |  | @ -73,30 +79,32 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |                         childNames.push_back(stripQuotsFromName(tokens[i])); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                     if(tokens[1] == "and") { | 
			
		
	
		
			
				
					|  |  |  |                         mBuilder.addAndElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                         success = mBuilder.addAndElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                     } else if(tokens[1] == "or") { | 
			
		
	
		
			
				
					|  |  |  |                         mBuilder.addOrElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                         success = mBuilder.addOrElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                     } else if(boost::starts_with(tokens[1], "vot")) { | 
			
		
	
		
			
				
					|  |  |  |                         mBuilder.addVotElement(name, boost::lexical_cast<unsigned>(tokens[1].substr(3)), childNames); | 
			
		
	
		
			
				
					|  |  |  |                         success = mBuilder.addVotElement(name, boost::lexical_cast<unsigned>(tokens[1].substr(3)), childNames); | 
			
		
	
		
			
				
					|  |  |  |                     } else if(tokens[1] == "pand") { | 
			
		
	
		
			
				
					|  |  |  |                         mBuilder.addPandElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                         success = mBuilder.addPandElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                     } else if(tokens[1] == "wsp" || tokens[1] == "csp") { | 
			
		
	
		
			
				
					|  |  |  |                         mBuilder.addSpareElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                         success = mBuilder.addSpareElement(name, childNames); | 
			
		
	
		
			
				
					|  |  |  |                     } else if(boost::starts_with(tokens[1], "lambda=")) { | 
			
		
	
		
			
				
					|  |  |  |                         mBuilder.addBasicElement(name, boost::lexical_cast<double>(tokens[1].substr(7)), boost::lexical_cast<double>(tokens[2].substr(5))); | 
			
		
	
		
			
				
					|  |  |  |                         success = mBuilder.addBasicElement(name, boost::lexical_cast<double>(tokens[1].substr(7)), boost::lexical_cast<double>(tokens[2].substr(5))); | 
			
		
	
		
			
				
					|  |  |  |                     } else { | 
			
		
	
		
			
				
					|  |  |  |                         STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Type name: " + tokens[1] + "  not recognized."); | 
			
		
	
		
			
				
					|  |  |  |                         success = false; | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 if (generalSuccess) { | 
			
		
	
		
			
				
					|  |  |  |                     generalSuccess = success; | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             if(!mBuilder.setTopLevel(toplevelId)) { | 
			
		
	
		
			
				
					|  |  |  |                 STORM_LOG_THROW(false, storm::exceptions::FileIoException, "Top level id unknown."); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             file.close(); | 
			
		
	
		
			
				
					|  |  |  |             return true;                         | 
			
		
	
		
			
				
					|  |  |  |             return generalSuccess; | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |          | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | } |