|
@ -273,6 +273,16 @@ namespace storm { |
|
|
moduleDefinition = ((qi::lit("module") > freshModuleName > *(variableDefinition(qi::_a, qi::_b, qi::_c))) > -invariantConstruct > (*commandDefinition(qi::_r1)) > qi::lit("endmodule"))[qi::_val = phoenix::bind(&PrismParser::createModule, phoenix::ref(*this), qi::_1, qi::_a, qi::_b, qi::_c, qi::_2, qi::_3, qi::_r1)]; |
|
|
moduleDefinition = ((qi::lit("module") > freshModuleName > *(variableDefinition(qi::_a, qi::_b, qi::_c))) > -invariantConstruct > (*commandDefinition(qi::_r1)) > qi::lit("endmodule"))[qi::_val = phoenix::bind(&PrismParser::createModule, phoenix::ref(*this), qi::_1, qi::_a, qi::_b, qi::_c, qi::_2, qi::_3, qi::_r1)]; |
|
|
moduleDefinition.name("module definition"); |
|
|
moduleDefinition.name("module definition"); |
|
|
|
|
|
|
|
|
|
|
|
commandName = (qi::lit("[") >> identifier >> qi::lit("]"))[qi::_val = qi::_1]; |
|
|
|
|
|
moduleName = identifier[qi::_val = qi::_1]; |
|
|
|
|
|
|
|
|
|
|
|
playerDefinition = (qi::lit("player") >> identifier[qi::_a = qi::_1] |
|
|
|
|
|
>> +( commandName(qi::_1)[phoenix::push_back(qi::_b, qi::_1)] |
|
|
|
|
|
| moduleName(qi::_1)[phoenix::push_back(qi::_c, qi::_1)] |
|
|
|
|
|
) |
|
|
|
|
|
>> qi::lit("endplayer"))[qi::_val = phoenix::bind(&PrismParser::createPlayer, phoenix::ref(*this), qi::_a, qi::_b, qi::_c)]; |
|
|
|
|
|
playerDefinition.name("player definition"); |
|
|
|
|
|
|
|
|
moduleRenaming = (qi::lit("[") > ((identifier > qi::lit("=") > identifier)[phoenix::insert(qi::_a, phoenix::construct<std::pair<std::string,std::string>>(qi::_1, qi::_2))] % ",") > qi::lit("]"))[qi::_val = phoenix::bind(&PrismParser::createModuleRenaming, phoenix::ref(*this), qi::_a)]; |
|
|
moduleRenaming = (qi::lit("[") > ((identifier > qi::lit("=") > identifier)[phoenix::insert(qi::_a, phoenix::construct<std::pair<std::string,std::string>>(qi::_1, qi::_2))] % ",") > qi::lit("]"))[qi::_val = phoenix::bind(&PrismParser::createModuleRenaming, phoenix::ref(*this), qi::_a)]; |
|
|
moduleRenaming.name("Module renaming list"); |
|
|
moduleRenaming.name("Module renaming list"); |
|
|
|
|
|
|
|
@ -286,6 +296,7 @@ namespace storm { |
|
|
> modelTypeDefinition[phoenix::bind(&PrismParser::setModelType, phoenix::ref(*this), phoenix::ref(globalProgramInformation), qi::_1)] |
|
|
> modelTypeDefinition[phoenix::bind(&PrismParser::setModelType, phoenix::ref(*this), phoenix::ref(globalProgramInformation), qi::_1)] |
|
|
> -observablesConstruct |
|
|
> -observablesConstruct |
|
|
> *( definedConstantDefinition[phoenix::push_back(phoenix::bind(&GlobalProgramInformation::constants, phoenix::ref(globalProgramInformation)), qi::_1)] |
|
|
> *( definedConstantDefinition[phoenix::push_back(phoenix::bind(&GlobalProgramInformation::constants, phoenix::ref(globalProgramInformation)), qi::_1)] |
|
|
|
|
|
| playerDefinition |
|
|
| undefinedConstantDefinition[phoenix::push_back(phoenix::bind(&GlobalProgramInformation::constants, phoenix::ref(globalProgramInformation)), qi::_1)] |
|
|
| undefinedConstantDefinition[phoenix::push_back(phoenix::bind(&GlobalProgramInformation::constants, phoenix::ref(globalProgramInformation)), qi::_1)] |
|
|
| formulaDefinition[phoenix::push_back(phoenix::bind(&GlobalProgramInformation::formulas, phoenix::ref(globalProgramInformation)), qi::_1)] |
|
|
| formulaDefinition[phoenix::push_back(phoenix::bind(&GlobalProgramInformation::formulas, phoenix::ref(globalProgramInformation)), qi::_1)] |
|
|
| globalVariableDefinition(phoenix::ref(globalProgramInformation)) |
|
|
| globalVariableDefinition(phoenix::ref(globalProgramInformation)) |
|
@ -761,6 +772,13 @@ namespace storm { |
|
|
return storm::prism::Module(moduleName, booleanVariables, integerVariables, clockVariables, invariant.is_initialized()? invariant.get() : storm::expressions::Expression(), commands, this->getFilename()); |
|
|
return storm::prism::Module(moduleName, booleanVariables, integerVariables, clockVariables, invariant.is_initialized()? invariant.get() : storm::expressions::Expression(), commands, this->getFilename()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
storm::prism::Player PrismParser::createPlayer(std::string const& playerName, std::vector<std::string> const& moduleNames, std::vector<std::string> const & commandNames) const { |
|
|
|
|
|
STORM_LOG_DEBUG("PLAYER created:" << playerName); |
|
|
|
|
|
std::vector<storm::prism::Module> modules; |
|
|
|
|
|
std::vector<storm::prism::Command> commands; |
|
|
|
|
|
return storm::prism::Player(playerName, modules, commands); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
bool PrismParser::isValidModuleRenaming(std::string const& oldModuleName, storm::prism::ModuleRenaming const& moduleRenaming, GlobalProgramInformation const& globalProgramInformation) const { |
|
|
bool PrismParser::isValidModuleRenaming(std::string const& oldModuleName, storm::prism::ModuleRenaming const& moduleRenaming, GlobalProgramInformation const& globalProgramInformation) const { |
|
|
if (!this->secondRun) { |
|
|
if (!this->secondRun) { |
|
|
auto const& renaming = moduleRenaming.getRenaming(); |
|
|
auto const& renaming = moduleRenaming.getRenaming(); |
|
|