diff --git a/aconversions2/src/ConversionHandler.cpp b/aconversions2/src/ConversionHandler.cpp index 99955d0f316c62077b76c6e3c9623520b97b8a31..3b051c1464ce0b2390ace9a87e88477d9170c74b 100644 --- a/aconversions2/src/ConversionHandler.cpp +++ b/aconversions2/src/ConversionHandler.cpp @@ -298,17 +298,17 @@ ConversionHandler::TFormalism ConversionHandler::parseFormalismFromTokens( void { std::string xmlMark = m_tokens.front( ).getData( ); - if( xmlMark == "automaton" || xmlMark == "NFA" || xmlMark == "DFA" ) + if( xmlMark == alib::Names::AUTOMATON_NFA || xmlMark == alib::Names::AUTOMATON_DFA ) return FINITE_AUTOMATON; - if( xmlMark == "regexp" || xmlMark == "unboundedRegexp" || xmlMark == "formalRegExp") + if( xmlMark == alib::Names::REGEXP_UNBOUNDED_REGEXP || xmlMark == alib::Names::REGEXP_FORMAL_REGEXP) return REGULAR_EXPRESSION; - if( xmlMark == "RightRG" ) + if( xmlMark == alib::Names::GRAMMAR_RIGHT_RG ) return RIGHT_REGULAR_GRAMMAR; - if( xmlMark == "LeftRG" ) - return LEFT_REGULAR_GRAMMAR; + if( xmlMark == alib::Names::GRAMMAR_LEFT_RG ) + return LEFT_REGULAR_GRAMMAR; throw exception::AlibException( "ConversionHandler: Invalid input formalism." ); } diff --git a/alib2data/src/Api.cpp b/alib2data/src/Api.cpp index 922ebe62aa5601e1d637795b5715320e61a258da..f0d1b9f06210a9d4676071d6a02bbf684714f8de 100644 --- a/alib2data/src/Api.cpp +++ b/alib2data/src/Api.cpp @@ -33,10 +33,75 @@ const primitive::PrimitiveToXMLComposer ToXMLComposers::primitiveComposer; const ToXMLComposers ToXMLComposers::toXMLComposers; +const std::string Names::ALIB_VOID = "Void"; +const std::string Names::CONTAINER_OBJECTS_SET = "ObjectsSet"; +const std::string Names::CONTAINER_OBJECTS_VECTOR = "ObjectsVector"; +const std::string Names::CONTAINER_OBJECTS_PAIR = "ObjectsPair"; +const std::string Names::CONTAINER_OBJECTS_MAP = "ObjectsMap"; +const std::string Names::EXCEPTION_ALIB_EXCEPTION = "AlibException"; +const std::string Names::ALPHABET_LABELED_SYMBOL = "LabeledSymbol"; +const std::string Names::ALPHABET_BLANK_SYMBOL = "BlankSymbol"; +const std::string Names::ALPHABET_BOTTOM_OF_THE_STACK_SYMBOL = "BottomOfTheStackSymbol"; +const std::string Names::ALPHABET_END_SYMBOL = "EndSymbol"; +const std::string Names::ALPHABET_RANKED_SYMBOL = "RankedSymbol"; +const std::string Names::ALPHABET_BAR_SYMBOL = "BarSymbol"; +const std::string Names::ALPHABET_RANKED_BAR_SYMBOL = "RankedBarSymbol"; +const std::string Names::ALPHABET_SUBTREE_WILDCARD_SYMBOL = "SubtreeWildcardSymbol"; +const std::string Names::AUTOMATON_EPSILON_NFA = "EpsilonNFA"; +const std::string Names::AUTOMATON_MULTI_INITIAL_STATE_NFA = "MultiInitialStateNFA"; +const std::string Names::AUTOMATON_NFA = "NFA"; +const std::string Names::AUTOMATON_DFA = "DFA"; +const std::string Names::AUTOMATON_EXTENDED_NFA = "ExtendedNFA"; +const std::string Names::AUTOMATON_COMPACT_NFA = "CompactNFA"; +const std::string Names::AUTOMATON_DPDA = "DPDA"; +const std::string Names::AUTOMATON_SINGLE_POP_DPDA = "SinglePopDPDA"; +const std::string Names::AUTOMATON_INPUT_DRIVEN_NPDA = "InputDrivenNPDA"; +const std::string Names::AUTOMATON_VISIBLY_PUSHDOWN_DPDA = "VisiblyPushdownDPDA"; +const std::string Names::AUTOMATON_VISIBLY_PUSHDOWN_NPDA = "VisiblyPushdownNPDA"; +const std::string Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA = "RealTimeHeightDeterministicDPDA"; +const std::string Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA = "RealTimeHeightDeterministicNPDA"; +const std::string Names::AUTOMATON_NPDA = "NPDA"; +const std::string Names::AUTOMATON_SINGLE_POP_NPDA = "SinglePopNPDA"; +const std::string Names::AUTOMATON_ONE_TAPE_DTM = "OneTapeDTM"; +const std::string Names::AUTOMATON_STATE = "State"; +const std::string Names::GRAMMAR_LEFT_LG = "LeftLG"; +const std::string Names::GRAMMAR_LEFT_RG = "LeftRG"; +const std::string Names::GRAMMAR_RIGHT_LG = "RightLG"; +const std::string Names::GRAMMAR_RIGHT_RG = "RightRG"; +const std::string Names::GRAMMAR_LG = "LG"; +const std::string Names::GRAMMAR_CFG = "CFG"; +const std::string Names::GRAMMAR_EPSILON_FREE_CFG = "EpsilonFreeCFG"; +const std::string Names::GRAMMAR_CNF = "CNF"; +const std::string Names::GRAMMAR_GNF = "GNF"; +const std::string Names::GRAMMAR_CSG = "CSG"; +const std::string Names::GRAMMAR_NON_CONTRACTING_GRAMMAR = "NonContractingGrammar"; +const std::string Names::GRAMMAR_CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR = "ContextPpreservingUnrestrictedGrammar"; +const std::string Names::GRAMMAR_UNRESTRICTED_GRAMMAR = "UnrestrictedGrammar"; +const std::string Names::LABEL_PRIMITIVE_LABEL = "PrimitiveLabel"; +const std::string Names::LABEL_HEXAVIGESIMAL_LABEL = "HexavigesimalLabel"; +const std::string Names::LABEL_OBJECT_LABEL = "ObjectLabel"; +const std::string Names::LABEL_LABEL_SET_LABEL = "LabelSetLabel"; +const std::string Names::LABEL_LABEL_PAIR_LABEL = "LabelPairLabel"; +const std::string Names::REGEXP_UNBOUNDED_REGEXP = "UnboundedRegExp"; +const std::string Names::REGEXP_FORMAL_REGEXP = "FormalRegExp"; +const std::string Names::STRING_LINEAR_STRING = "LinearString"; +const std::string Names::STRING_CYCLIC_STRING = "CyclicString"; +const std::string Names::STRING_EPSILON = "Epsilon"; +const std::string Names::PRIMITIVE_PRIMITIVE = "Primitive"; +const std::string Names::PRIMITIVE_STRING = "String"; +const std::string Names::PRIMITIVE_INTEGER = "Integer"; +const std::string Names::PRIMITIVE_CHARACTER = "Character"; +const std::string Names::PRIMITIVE_UNSIGNED = "Unsigned"; +const std::string Names::PRIMITIVE_BOOL = "Bool"; + Void api<Void>::parse(std::list<sax::Token>& input) { return FromXMLParsers::objectParser.parseVoid(input); } +bool api<Void>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALIB_VOID); +} + std::list<sax::Token> api<Void>::compose(const Void& data) { return ToXMLComposers::objectComposer.compose(data); } @@ -45,6 +110,10 @@ container::Container api<container::Container>::parse(std::list<sax::Token>& inp return FromXMLParsers::containerParser.parseContainer(input); } +bool api<container::Container>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::containerParser.first(input); +} + std::list<sax::Token> api<container::Container>::compose(const container::Container& data) { return ToXMLComposers::containerComposer.compose(data); } @@ -53,6 +122,10 @@ container::ObjectsSet api<container::ObjectsSet>::parse(std::list<sax::Token>& i return FromXMLParsers::containerParser.parseObjectsSet(input); } +bool api<container::ObjectsSet>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::CONTAINER_OBJECTS_SET); +} + std::list<sax::Token> api<container::ObjectsSet>::compose(const container::ObjectsSet& data) { return ToXMLComposers::containerComposer.compose(data); } @@ -61,6 +134,10 @@ container::ObjectsVector api<container::ObjectsVector>::parse(std::list<sax::Tok return FromXMLParsers::containerParser.parseObjectsVector(input); } +bool api<container::ObjectsVector>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::CONTAINER_OBJECTS_VECTOR); +} + std::list<sax::Token> api<container::ObjectsVector>::compose(const container::ObjectsVector& data) { return ToXMLComposers::containerComposer.compose(data); } @@ -69,6 +146,10 @@ container::ObjectsPair api<container::ObjectsPair>::parse(std::list<sax::Token>& return FromXMLParsers::containerParser.parseObjectsPair(input); } +bool api<container::ObjectsPair>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::CONTAINER_OBJECTS_PAIR); +} + std::list<sax::Token> api<container::ObjectsPair>::compose(const container::ObjectsPair& data) { return ToXMLComposers::containerComposer.compose(data); } @@ -77,6 +158,10 @@ container::ObjectsMap api<container::ObjectsMap>::parse(std::list<sax::Token>& i return FromXMLParsers::containerParser.parseObjectsMap(input); } +bool api<container::ObjectsMap>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::CONTAINER_OBJECTS_MAP); +} + std::list<sax::Token> api<container::ObjectsMap>::compose(const container::ObjectsMap& data) { return ToXMLComposers::containerComposer.compose(data); } @@ -85,6 +170,10 @@ alib::Object api<alib::Object>::parse(std::list<sax::Token>& input) { return FromXMLParsers::objectParser.parseObject(input); } +bool api<alib::Object>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::objectParser.first(input); +} + std::list<sax::Token> api<alib::Object>::compose(const alib::Object& data) { return ToXMLComposers::objectComposer.compose(data); } @@ -93,6 +182,10 @@ exception::AlibException api<exception::AlibException>::parse(std::list<sax::Tok return FromXMLParsers::exceptionParser.parseException(input); } +bool api<exception::AlibException>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::EXCEPTION_ALIB_EXCEPTION); +} + std::list<sax::Token> api<exception::AlibException>::compose(const exception::AlibException& data) { return ToXMLComposers::exceptionComposer.compose(data); } @@ -101,6 +194,10 @@ alphabet::Symbol api<alphabet::Symbol>::parse(std::list<sax::Token>& input) { return FromXMLParsers::symbolParser.parseSymbol(input); } +bool api<alphabet::Symbol>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::symbolParser.first(input); +} + std::list<sax::Token> api<alphabet::Symbol>::compose(const alphabet::Symbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -109,6 +206,10 @@ alphabet::LabeledSymbol api<alphabet::LabeledSymbol>::parse(std::list<sax::Token return FromXMLParsers::symbolParser.parseLabeledSymbol(input); } +bool api<alphabet::LabeledSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_LABELED_SYMBOL); +} + std::list<sax::Token> api<alphabet::LabeledSymbol>::compose(const alphabet::LabeledSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -117,6 +218,10 @@ alphabet::BlankSymbol api<alphabet::BlankSymbol>::parse(std::list<sax::Token>& i return FromXMLParsers::symbolParser.parseBlankSymbol(input); } +bool api<alphabet::BlankSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_BLANK_SYMBOL); +} + std::list<sax::Token> api<alphabet::BlankSymbol>::compose(const alphabet::BlankSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -125,6 +230,10 @@ alphabet::BottomOfTheStackSymbol api<alphabet::BottomOfTheStackSymbol>::parse(st return FromXMLParsers::symbolParser.parseBottomOfTheStackSymbol(input); } +bool api<alphabet::BottomOfTheStackSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_BOTTOM_OF_THE_STACK_SYMBOL); +} + std::list<sax::Token> api<alphabet::BottomOfTheStackSymbol>::compose(const alphabet::BottomOfTheStackSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -133,6 +242,10 @@ alphabet::EndSymbol api<alphabet::EndSymbol>::parse(std::list<sax::Token>& input return FromXMLParsers::symbolParser.parseEndSymbol(input); } +bool api<alphabet::EndSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_END_SYMBOL); +} + std::list<sax::Token> api<alphabet::EndSymbol>::compose(const alphabet::EndSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -141,6 +254,10 @@ alphabet::RankedSymbol api<alphabet::RankedSymbol>::parse(std::list<sax::Token>& return FromXMLParsers::symbolParser.parseRankedSymbol(input); } +bool api<alphabet::RankedSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_RANKED_SYMBOL); +} + std::list<sax::Token> api<alphabet::RankedSymbol>::compose(const alphabet::RankedSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -149,6 +266,10 @@ alphabet::BarSymbol api<alphabet::BarSymbol>::parse(std::list<sax::Token>& input return FromXMLParsers::symbolParser.parseBarSymbol(input); } +bool api<alphabet::BarSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_BAR_SYMBOL); +} + std::list<sax::Token> api<alphabet::BarSymbol>::compose(const alphabet::BarSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -157,6 +278,10 @@ alphabet::RankedBarSymbol api<alphabet::RankedBarSymbol>::parse(std::list<sax::T return FromXMLParsers::symbolParser.parseRankedBarSymbol(input); } +bool api<alphabet::RankedBarSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_RANKED_BAR_SYMBOL); +} + std::list<sax::Token> api<alphabet::RankedBarSymbol>::compose(const alphabet::RankedBarSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -165,6 +290,10 @@ alphabet::SubtreeWildcardSymbol api<alphabet::SubtreeWildcardSymbol>::parse(std: return FromXMLParsers::symbolParser.parseSubtreeWildcardSymbol(input); } +bool api<alphabet::SubtreeWildcardSymbol>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::ALPHABET_SUBTREE_WILDCARD_SYMBOL); +} + std::list<sax::Token> api<alphabet::SubtreeWildcardSymbol>::compose(const alphabet::SubtreeWildcardSymbol& data) { return ToXMLComposers::symbolComposer.compose(data); } @@ -174,6 +303,10 @@ automaton::Automaton api<automaton::Automaton>::parse(std::list<sax::Token>& inp return FromXMLParsers::automatonParser.parseAutomaton(input); } +bool api<automaton::Automaton>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::automatonParser.first(input); +} + std::list<sax::Token> api<automaton::Automaton>::compose(const automaton::Automaton& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -182,6 +315,10 @@ automaton::EpsilonNFA api<automaton::EpsilonNFA>::parse(std::list<sax::Token>& i return FromXMLParsers::automatonParser.parseEpsilonNFA(input); } +bool api<automaton::EpsilonNFA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_EPSILON_NFA); +} + std::list<sax::Token> api<automaton::EpsilonNFA>::compose(const automaton::EpsilonNFA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -190,6 +327,10 @@ automaton::MultiInitialStateNFA api<automaton::MultiInitialStateNFA>::parse(std: return FromXMLParsers::automatonParser.parseMultiInitialStateNFA(input); } +bool api<automaton::MultiInitialStateNFA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_MULTI_INITIAL_STATE_NFA); +} + std::list<sax::Token> api<automaton::MultiInitialStateNFA>::compose(const automaton::MultiInitialStateNFA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -198,6 +339,10 @@ automaton::NFA api<automaton::NFA>::parse(std::list<sax::Token>& input) { return FromXMLParsers::automatonParser.parseNFA(input); } +bool api<automaton::NFA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_NFA); +} + std::list<sax::Token> api<automaton::NFA>::compose(const automaton::NFA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -206,6 +351,10 @@ automaton::DFA api<automaton::DFA>::parse(std::list<sax::Token>& input) { return FromXMLParsers::automatonParser.parseDFA(input); } +bool api<automaton::DFA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_DFA); +} + std::list<sax::Token> api<automaton::DFA>::compose(const automaton::DFA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -214,6 +363,10 @@ automaton::ExtendedNFA api<automaton::ExtendedNFA>::parse(std::list<sax::Token>& return FromXMLParsers::automatonParser.parseExtendedNFA(input); } +bool api<automaton::ExtendedNFA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_EXTENDED_NFA); +} + std::list<sax::Token> api<automaton::ExtendedNFA>::compose(const automaton::ExtendedNFA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -222,6 +375,10 @@ automaton::CompactNFA api<automaton::CompactNFA>::parse(std::list<sax::Token>& i return FromXMLParsers::automatonParser.parseCompactNFA(input); } +bool api<automaton::CompactNFA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_COMPACT_NFA); +} + std::list<sax::Token> api<automaton::CompactNFA>::compose(const automaton::CompactNFA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -230,6 +387,10 @@ automaton::DPDA api<automaton::DPDA>::parse(std::list<sax::Token>& input) { return FromXMLParsers::automatonParser.parseDPDA(input); } +bool api<automaton::DPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_DPDA); +} + std::list<sax::Token> api<automaton::DPDA>::compose(const automaton::DPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -238,6 +399,10 @@ automaton::SinglePopDPDA api<automaton::SinglePopDPDA>::parse(std::list<sax::Tok return FromXMLParsers::automatonParser.parseSinglePopDPDA(input); } +bool api<automaton::SinglePopDPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_SINGLE_POP_DPDA); +} + std::list<sax::Token> api<automaton::SinglePopDPDA>::compose(const automaton::SinglePopDPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -246,6 +411,10 @@ automaton::InputDrivenNPDA api<automaton::InputDrivenNPDA>::parse(std::list<sax: return FromXMLParsers::automatonParser.parseInputDrivenNPDA(input); } +bool api<automaton::InputDrivenNPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_INPUT_DRIVEN_NPDA); +} + std::list<sax::Token> api<automaton::InputDrivenNPDA>::compose(const automaton::InputDrivenNPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -254,6 +423,10 @@ automaton::VisiblyPushdownDPDA api<automaton::VisiblyPushdownDPDA>::parse(std::l return FromXMLParsers::automatonParser.parseVisiblyPushdownDPDA(input); } +bool api<automaton::VisiblyPushdownDPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_VISIBLY_PUSHDOWN_DPDA); +} + std::list<sax::Token> api<automaton::VisiblyPushdownDPDA>::compose(const automaton::VisiblyPushdownDPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -262,6 +435,10 @@ automaton::VisiblyPushdownNPDA api<automaton::VisiblyPushdownNPDA>::parse(std::l return FromXMLParsers::automatonParser.parseVisiblyPushdownNPDA(input); } +bool api<automaton::VisiblyPushdownNPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_VISIBLY_PUSHDOWN_NPDA); +} + std::list<sax::Token> api<automaton::VisiblyPushdownNPDA>::compose(const automaton::VisiblyPushdownNPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -270,6 +447,10 @@ automaton::RealTimeHeightDeterministicDPDA api<automaton::RealTimeHeightDetermin return FromXMLParsers::automatonParser.parseRealTimeHeightDeterministicDPDA(input); } +bool api<automaton::RealTimeHeightDeterministicDPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA); +} + std::list<sax::Token> api<automaton::RealTimeHeightDeterministicDPDA>::compose(const automaton::RealTimeHeightDeterministicDPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -278,6 +459,10 @@ automaton::RealTimeHeightDeterministicNPDA api<automaton::RealTimeHeightDetermin return FromXMLParsers::automatonParser.parseRealTimeHeightDeterministicNPDA(input); } +bool api<automaton::RealTimeHeightDeterministicNPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA); +} + std::list<sax::Token> api<automaton::RealTimeHeightDeterministicNPDA>::compose(const automaton::RealTimeHeightDeterministicNPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -286,6 +471,10 @@ automaton::NPDA api<automaton::NPDA>::parse(std::list<sax::Token>& input) { return FromXMLParsers::automatonParser.parseNPDA(input); } +bool api<automaton::NPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_NPDA); +} + std::list<sax::Token> api<automaton::NPDA>::compose(const automaton::NPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -294,6 +483,10 @@ automaton::SinglePopNPDA api<automaton::SinglePopNPDA>::parse(std::list<sax::Tok return FromXMLParsers::automatonParser.parseSinglePopNPDA(input); } +bool api<automaton::SinglePopNPDA>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_SINGLE_POP_NPDA); +} + std::list<sax::Token> api<automaton::SinglePopNPDA>::compose(const automaton::SinglePopNPDA& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -302,6 +495,10 @@ automaton::OneTapeDTM api<automaton::OneTapeDTM>::parse(std::list<sax::Token>& i return FromXMLParsers::automatonParser.parseOneTapeDTM(input); } +bool api<automaton::OneTapeDTM>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_ONE_TAPE_DTM); +} + std::list<sax::Token> api<automaton::OneTapeDTM>::compose(const automaton::OneTapeDTM& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -310,6 +507,10 @@ automaton::State api<automaton::State>::parse(std::list<sax::Token>& input) { return FromXMLParsers::automatonParser.parseState(input); } +bool api<automaton::State>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::AUTOMATON_STATE); +} + std::list<sax::Token> api<automaton::State>::compose(const automaton::State& data) { return ToXMLComposers::automatonComposer.compose(data); } @@ -319,6 +520,10 @@ grammar::Grammar api<grammar::Grammar>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseGrammar(input); } +bool api<grammar::Grammar>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::grammarParser.first(input); +} + std::list<sax::Token> api<grammar::Grammar>::compose(const grammar::Grammar& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -327,6 +532,10 @@ grammar::LeftLG api<grammar::LeftLG>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseLeftLG(input); } +bool api<grammar::LeftLG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_LEFT_LG); +} + std::list<sax::Token> api<grammar::LeftLG>::compose(const grammar::LeftLG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -335,6 +544,10 @@ grammar::LeftRG api<grammar::LeftRG>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseLeftRG(input); } +bool api<grammar::LeftRG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_LEFT_RG); +} + std::list<sax::Token> api<grammar::LeftRG>::compose(const grammar::LeftRG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -343,6 +556,10 @@ grammar::RightLG api<grammar::RightLG>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseRightLG(input); } +bool api<grammar::RightLG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_RIGHT_LG); +} + std::list<sax::Token> api<grammar::RightLG>::compose(const grammar::RightLG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -351,6 +568,10 @@ grammar::RightRG api<grammar::RightRG>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseRightRG(input); } +bool api<grammar::RightRG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_RIGHT_RG); +} + std::list<sax::Token> api<grammar::RightRG>::compose(const grammar::RightRG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -359,6 +580,10 @@ grammar::LG api<grammar::LG>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseLG(input); } +bool api<grammar::LG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_LG); +} + std::list<sax::Token> api<grammar::LG>::compose(const grammar::LG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -367,6 +592,10 @@ grammar::CFG api<grammar::CFG>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseCFG(input); } +bool api<grammar::CFG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_CFG); +} + std::list<sax::Token> api<grammar::CFG>::compose(const grammar::CFG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -375,6 +604,10 @@ grammar::EpsilonFreeCFG api<grammar::EpsilonFreeCFG>::parse(std::list<sax::Token return FromXMLParsers::grammarParser.parseEpsilonFreeCFG(input); } +bool api<grammar::EpsilonFreeCFG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_EPSILON_FREE_CFG); +} + std::list<sax::Token> api<grammar::EpsilonFreeCFG>::compose(const grammar::EpsilonFreeCFG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -383,6 +616,10 @@ grammar::CNF api<grammar::CNF>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseCNF(input); } +bool api<grammar::CNF>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_CNF); +} + std::list<sax::Token> api<grammar::CNF>::compose(const grammar::CNF& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -391,6 +628,10 @@ grammar::GNF api<grammar::GNF>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseGNF(input); } +bool api<grammar::GNF>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_GNF); +} + std::list<sax::Token> api<grammar::GNF>::compose(const grammar::GNF& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -399,6 +640,10 @@ grammar::CSG api<grammar::CSG>::parse(std::list<sax::Token>& input) { return FromXMLParsers::grammarParser.parseCSG(input); } +bool api<grammar::CSG>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_CSG); +} + std::list<sax::Token> api<grammar::CSG>::compose(const grammar::CSG& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -407,6 +652,10 @@ grammar::NonContractingGrammar api<grammar::NonContractingGrammar>::parse(std::l return FromXMLParsers::grammarParser.parseNonContractingGrammar(input); } +bool api<grammar::NonContractingGrammar>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_NON_CONTRACTING_GRAMMAR); +} + std::list<sax::Token> api<grammar::NonContractingGrammar>::compose(const grammar::NonContractingGrammar& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -415,6 +664,10 @@ grammar::ContextPreservingUnrestrictedGrammar api<grammar::ContextPreservingUnre return FromXMLParsers::grammarParser.parseContextPreservingUnrestrictedGrammar(input); } +bool api<grammar::ContextPreservingUnrestrictedGrammar>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR); +} + std::list<sax::Token> api<grammar::ContextPreservingUnrestrictedGrammar>::compose(const grammar::ContextPreservingUnrestrictedGrammar& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -423,6 +676,10 @@ grammar::UnrestrictedGrammar api<grammar::UnrestrictedGrammar>::parse(std::list< return FromXMLParsers::grammarParser.parseUnrestrictedGrammar(input); } +bool api<grammar::UnrestrictedGrammar>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::GRAMMAR_UNRESTRICTED_GRAMMAR); +} + std::list<sax::Token> api<grammar::UnrestrictedGrammar>::compose(const grammar::UnrestrictedGrammar& data) { return ToXMLComposers::grammarComposer.compose(data); } @@ -432,6 +689,10 @@ label::Label api<label::Label>::parse(std::list<sax::Token>& input) { return FromXMLParsers::labelParser.parseLabel(input); } +bool api<label::Label>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::labelParser.first(input); +} + std::list<sax::Token> api<label::Label>::compose(const label::Label& data) { return ToXMLComposers::labelComposer.compose(data); } @@ -440,6 +701,10 @@ label::PrimitiveLabel api<label::PrimitiveLabel>::parse(std::list<sax::Token>& i return FromXMLParsers::labelParser.parsePrimitiveLabel(input); } +bool api<label::PrimitiveLabel>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::LABEL_PRIMITIVE_LABEL); +} + std::list<sax::Token> api<label::PrimitiveLabel>::compose(const label::PrimitiveLabel& data) { return ToXMLComposers::labelComposer.compose(data); } @@ -448,6 +713,10 @@ label::HexavigesimalLabel api<label::HexavigesimalLabel>::parse(std::list<sax::T return FromXMLParsers::labelParser.parseHexavigesimalLabel(input); } +bool api<label::HexavigesimalLabel>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::LABEL_PRIMITIVE_LABEL); +} + std::list<sax::Token> api<label::HexavigesimalLabel>::compose(const label::HexavigesimalLabel& data) { return ToXMLComposers::labelComposer.compose(data); } @@ -456,6 +725,10 @@ label::ObjectLabel api<label::ObjectLabel>::parse(std::list<sax::Token>& input) return FromXMLParsers::labelParser.parseObjectLabel(input); } +bool api<label::ObjectLabel>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::LABEL_OBJECT_LABEL); +} + std::list<sax::Token> api<label::ObjectLabel>::compose(const label::ObjectLabel& data) { return ToXMLComposers::labelComposer.compose(data); } @@ -464,6 +737,10 @@ label::LabelSetLabel api<label::LabelSetLabel>::parse(std::list<sax::Token>& inp return FromXMLParsers::labelParser.parseLabelSetLabel(input); } +bool api<label::LabelSetLabel>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::LABEL_LABEL_SET_LABEL); +} + std::list<sax::Token> api<label::LabelSetLabel>::compose(const label::LabelSetLabel& data) { return ToXMLComposers::labelComposer.compose(data); } @@ -472,6 +749,10 @@ label::LabelPairLabel api<label::LabelPairLabel>::parse(std::list<sax::Token>& i return FromXMLParsers::labelParser.parseLabelPairLabel(input); } +bool api<label::LabelPairLabel>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::LABEL_LABEL_PAIR_LABEL); +} + std::list<sax::Token> api<label::LabelPairLabel>::compose(const label::LabelPairLabel& data) { return ToXMLComposers::labelComposer.compose(data); } @@ -481,6 +762,10 @@ regexp::RegExp api<regexp::RegExp>::parse(std::list<sax::Token>& input) { return FromXMLParsers::regexpParser.parseRegExp(input); } +bool api<regexp::RegExp>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::regexpParser.first(input); +} + std::list<sax::Token> api<regexp::RegExp>::compose(const regexp::RegExp& data) { return ToXMLComposers::regexpComposer.compose(data); } @@ -489,6 +774,10 @@ regexp::UnboundedRegExp api<regexp::UnboundedRegExp>::parse(std::list<sax::Token return FromXMLParsers::regexpParser.parseUnboundedRegExp(input); } +bool api<regexp::UnboundedRegExp>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::REGEXP_UNBOUNDED_REGEXP); +} + std::list<sax::Token> api<regexp::UnboundedRegExp>::compose(const regexp::UnboundedRegExp& data) { return ToXMLComposers::regexpComposer.compose(data); } @@ -497,6 +786,10 @@ regexp::FormalRegExp api<regexp::FormalRegExp>::parse(std::list<sax::Token>& inp return FromXMLParsers::regexpParser.parseFormalRegExp(input); } +bool api<regexp::FormalRegExp>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::REGEXP_FORMAL_REGEXP); +} + std::list<sax::Token> api<regexp::FormalRegExp>::compose(const regexp::FormalRegExp& data) { return ToXMLComposers::regexpComposer.compose(data); } @@ -506,6 +799,10 @@ string::String api<string::String>::parse(std::list<sax::Token>& input) { return FromXMLParsers::stringParser.parseString(input); } +bool api<string::String>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::stringParser.first(input); +} + std::list<sax::Token> api<string::String>::compose(const string::String& data) { return ToXMLComposers::stringComposer.compose(data); } @@ -514,6 +811,10 @@ string::LinearString api<string::LinearString>::parse(std::list<sax::Token>& inp return FromXMLParsers::stringParser.parseLinearString(input); } +bool api<string::LinearString>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::STRING_LINEAR_STRING); +} + std::list<sax::Token> api<string::LinearString>::compose(const string::LinearString& data) { return ToXMLComposers::stringComposer.compose(data); } @@ -522,6 +823,10 @@ string::CyclicString api<string::CyclicString>::parse(std::list<sax::Token>& inp return FromXMLParsers::stringParser.parseCyclicString(input); } +bool api<string::CyclicString>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::STRING_CYCLIC_STRING); +} + std::list<sax::Token> api<string::CyclicString>::compose(const string::CyclicString& data) { return ToXMLComposers::stringComposer.compose(data); } @@ -530,6 +835,10 @@ string::Epsilon api<string::Epsilon>::parse(std::list<sax::Token>& input) { return FromXMLParsers::stringParser.parseEpsilon(input); } +bool api<string::Epsilon>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::STRING_EPSILON); +} + std::list<sax::Token> api<string::Epsilon>::compose(const string::Epsilon& data) { return ToXMLComposers::stringComposer.compose(data); } @@ -539,6 +848,10 @@ primitive::Primitive api<primitive::Primitive>::parse(std::list<sax::Token>& inp return FromXMLParsers::primitiveParser.parsePrimitive(input); } +bool api<primitive::Primitive>::first(const std::list<sax::Token>& input) { + return FromXMLParsers::primitiveParser.first(input); +} + std::list<sax::Token> api<primitive::Primitive>::compose(const primitive::Primitive& data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -547,6 +860,10 @@ primitive::String api<primitive::String>::parse(std::list<sax::Token>& input) { return FromXMLParsers::primitiveParser.parseString(input); } +bool api<primitive::String>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_STRING); +} + std::list<sax::Token> api<primitive::String>::compose(const primitive::String& data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -555,6 +872,10 @@ std::string api<std::string>::parse(std::list<sax::Token>& input) { return FromXMLParsers::primitiveParser.parseStringRaw(input); } +bool api<std::string>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_STRING); +} + std::list<sax::Token> api<std::string>::compose(const std::string& data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -563,6 +884,10 @@ primitive::Integer api<primitive::Integer>::parse(std::list<sax::Token>& input) return FromXMLParsers::primitiveParser.parseInteger(input); } +bool api<primitive::Integer>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_INTEGER); +} + std::list<sax::Token> api<primitive::Integer>::compose(const primitive::Integer& data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -571,6 +896,10 @@ int api<int>::parse(std::list<sax::Token>& input) { return FromXMLParsers::primitiveParser.parseIntegerRaw(input); } +bool api<int>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_INTEGER); +} + std::list<sax::Token> api<int>::compose(int data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -579,6 +908,10 @@ primitive::Character api<primitive::Character>::parse(std::list<sax::Token>& inp return FromXMLParsers::primitiveParser.parseCharacter(input); } +bool api<primitive::Character>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_CHARACTER); +} + std::list<sax::Token> api<primitive::Character>::compose(const primitive::Character& data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -587,6 +920,10 @@ char api<char>::parse(std::list<sax::Token>& input) { return FromXMLParsers::primitiveParser.parseCharacterRaw(input); } +bool api<char>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_CHARACTER); +} + std::list<sax::Token> api<char>::compose(char data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -595,6 +932,10 @@ unsigned api<unsigned>::parse(std::list<sax::Token>& input) { return FromXMLParsers::primitiveParser.parseCharacterRaw(input); } +bool api<unsigned>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_CHARACTER); +} + std::list<sax::Token> api<unsigned>::compose(unsigned data) { return ToXMLComposers::primitiveComposer.compose(data); } @@ -603,6 +944,10 @@ bool api<bool>::parse(std::list<sax::Token>& input) { return FromXMLParsers::primitiveParser.parseCharacterRaw(input); } +bool api<bool>::first(const std::list<sax::Token>& input) { + return sax::FromXMLParserHelper::isToken(input, sax::Token::TokenType::START_ELEMENT, Names::PRIMITIVE_CHARACTER); +} + std::list<sax::Token> api<bool>::compose(bool data) { return ToXMLComposers::primitiveComposer.compose(data); } diff --git a/alib2data/src/Api.hpp b/alib2data/src/Api.hpp index 6c7046cc47fc2d72ee2184d178c27d0b0e6af86e..bb6db4492319896ff0fc689e6cdc663c76dc6f9c 100644 --- a/alib2data/src/Api.hpp +++ b/alib2data/src/Api.hpp @@ -32,63 +32,138 @@ namespace alib { +class Names { +public: + const static std::string ALIB_VOID; + const static std::string CONTAINER_OBJECTS_SET; + const static std::string CONTAINER_OBJECTS_VECTOR; + const static std::string CONTAINER_OBJECTS_PAIR; + const static std::string CONTAINER_OBJECTS_MAP; + const static std::string EXCEPTION_ALIB_EXCEPTION; + const static std::string ALPHABET_LABELED_SYMBOL; + const static std::string ALPHABET_BLANK_SYMBOL; + const static std::string ALPHABET_BOTTOM_OF_THE_STACK_SYMBOL; + const static std::string ALPHABET_END_SYMBOL; + const static std::string ALPHABET_RANKED_SYMBOL; + const static std::string ALPHABET_BAR_SYMBOL; + const static std::string ALPHABET_RANKED_BAR_SYMBOL; + const static std::string ALPHABET_SUBTREE_WILDCARD_SYMBOL; + const static std::string AUTOMATON_EPSILON_NFA; + const static std::string AUTOMATON_MULTI_INITIAL_STATE_NFA; + const static std::string AUTOMATON_NFA; + const static std::string AUTOMATON_DFA; + const static std::string AUTOMATON_EXTENDED_NFA; + const static std::string AUTOMATON_COMPACT_NFA; + const static std::string AUTOMATON_DPDA; + const static std::string AUTOMATON_SINGLE_POP_DPDA; + const static std::string AUTOMATON_INPUT_DRIVEN_NPDA; + const static std::string AUTOMATON_VISIBLY_PUSHDOWN_DPDA; + const static std::string AUTOMATON_VISIBLY_PUSHDOWN_NPDA; + const static std::string AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA; + const static std::string AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA; + const static std::string AUTOMATON_NPDA; + const static std::string AUTOMATON_SINGLE_POP_NPDA; + const static std::string AUTOMATON_ONE_TAPE_DTM; + const static std::string AUTOMATON_STATE; + const static std::string GRAMMAR_LEFT_LG; + const static std::string GRAMMAR_LEFT_RG; + const static std::string GRAMMAR_RIGHT_LG; + const static std::string GRAMMAR_RIGHT_RG; + const static std::string GRAMMAR_LG; + const static std::string GRAMMAR_CFG; + const static std::string GRAMMAR_EPSILON_FREE_CFG; + const static std::string GRAMMAR_CNF; + const static std::string GRAMMAR_GNF; + const static std::string GRAMMAR_CSG; + const static std::string GRAMMAR_NON_CONTRACTING_GRAMMAR; + const static std::string GRAMMAR_CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR; + const static std::string GRAMMAR_UNRESTRICTED_GRAMMAR; + const static std::string LABEL_PRIMITIVE_LABEL; + const static std::string LABEL_HEXAVIGESIMAL_LABEL; + const static std::string LABEL_OBJECT_LABEL; + const static std::string LABEL_LABEL_SET_LABEL; + const static std::string LABEL_LABEL_PAIR_LABEL; + const static std::string REGEXP_UNBOUNDED_REGEXP; + const static std::string REGEXP_FORMAL_REGEXP; + const static std::string STRING_LINEAR_STRING; + const static std::string STRING_CYCLIC_STRING; + const static std::string STRING_EPSILON; + const static std::string PRIMITIVE_PRIMITIVE; + const static std::string PRIMITIVE_STRING; + const static std::string PRIMITIVE_INTEGER; + const static std::string PRIMITIVE_CHARACTER; + const static std::string PRIMITIVE_UNSIGNED; + const static std::string PRIMITIVE_BOOL; + +}; + template<typename T> struct api { static T parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const T& data); }; template<> struct api<Void> { static Void parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const Void& data); }; template<typename T> struct api<std::set<T>> { static std::set<T> parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const std::set<T>& data); }; template<> struct api<container::ObjectsSet> { static container::ObjectsSet parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const container::ObjectsSet& data); }; template<typename T> struct api<std::vector<T>> { static std::vector<T> parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const std::vector<T>& data); }; template<> struct api<container::ObjectsVector> { static container::ObjectsVector parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const container::ObjectsVector& data); }; template<typename T, typename R> struct api<std::pair<T, R>> { static std::pair<T, R> parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const std::pair<T, R>& data); }; template<> struct api<container::ObjectsPair> { static container::ObjectsPair parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const container::ObjectsPair& data); }; template<typename T, typename R> struct api<std::map<T, R>> { static std::map<T, R> parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const std::map<T, R>& data); }; template<> struct api<container::ObjectsMap> { static container::ObjectsMap parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const container::ObjectsMap& data); }; @@ -96,6 +171,7 @@ struct api<container::ObjectsMap> { template<> struct api<Object> { static Object parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const Object& data); }; @@ -103,6 +179,7 @@ struct api<Object> { template<> struct api<exception::AlibException> { static exception::AlibException parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const exception::AlibException& data); }; @@ -110,30 +187,35 @@ struct api<exception::AlibException> { template<> struct api<alphabet::Symbol> { static alphabet::Symbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::Symbol& data); }; template<> struct api<alphabet::LabeledSymbol> { static alphabet::LabeledSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::LabeledSymbol& data); }; template<> struct api<alphabet::BlankSymbol> { static alphabet::BlankSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::BlankSymbol& data); }; template<> struct api<alphabet::BottomOfTheStackSymbol> { static alphabet::BottomOfTheStackSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::BottomOfTheStackSymbol& data); }; template<> struct api<alphabet::EndSymbol> { static alphabet::EndSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::EndSymbol& data); }; @@ -141,216 +223,252 @@ struct api<alphabet::EndSymbol> { template<> struct api<alphabet::RankedSymbol> { static alphabet::RankedSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::RankedSymbol& data); }; template<> struct api<alphabet::BarSymbol> { static alphabet::BarSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::BarSymbol& data); }; template<> struct api<alphabet::RankedBarSymbol> { static alphabet::RankedBarSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::RankedBarSymbol& data); }; template<> struct api<alphabet::SubtreeWildcardSymbol> { static alphabet::SubtreeWildcardSymbol parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const alphabet::SubtreeWildcardSymbol& data); }; template<> struct api<automaton::Automaton> { static automaton::Automaton parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::Automaton& data); }; template<> struct api<automaton::EpsilonNFA> { static automaton::EpsilonNFA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::EpsilonNFA& data); }; template<> struct api<automaton::MultiInitialStateNFA> { static automaton::MultiInitialStateNFA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::MultiInitialStateNFA& data); }; template<> struct api<automaton::NFA> { static automaton::NFA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::NFA& data); }; template<> struct api<automaton::DFA> { static automaton::DFA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::DFA& data); }; template<> struct api<automaton::ExtendedNFA> { static automaton::ExtendedNFA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::ExtendedNFA& data); }; template<> struct api<automaton::CompactNFA> { static automaton::CompactNFA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::CompactNFA& data); }; template<> struct api<automaton::DPDA> { static automaton::DPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::DPDA& data); }; template<> struct api<automaton::SinglePopDPDA> { static automaton::SinglePopDPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::SinglePopDPDA& data); }; template<> struct api<automaton::InputDrivenNPDA> { static automaton::InputDrivenNPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::InputDrivenNPDA& data); }; template<> struct api<automaton::VisiblyPushdownDPDA> { static automaton::VisiblyPushdownDPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::VisiblyPushdownDPDA& data); }; template<> struct api<automaton::VisiblyPushdownNPDA> { static automaton::VisiblyPushdownNPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::VisiblyPushdownNPDA& data); }; template<> struct api<automaton::RealTimeHeightDeterministicDPDA> { static automaton::RealTimeHeightDeterministicDPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::RealTimeHeightDeterministicDPDA& data); }; template<> struct api<automaton::RealTimeHeightDeterministicNPDA> { static automaton::RealTimeHeightDeterministicNPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::RealTimeHeightDeterministicNPDA& data); }; template<> struct api<automaton::NPDA> { static automaton::NPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::NPDA& data); }; template<> struct api<automaton::SinglePopNPDA> { static automaton::SinglePopNPDA parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::SinglePopNPDA& data); }; template<> struct api<automaton::OneTapeDTM> { static automaton::OneTapeDTM parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::OneTapeDTM& data); }; template<> struct api<automaton::State> { static automaton::State parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const automaton::State& data); }; template<> struct api<grammar::Grammar> { static grammar::Grammar parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::Grammar& data); }; template<> struct api<grammar::LeftLG> { static grammar::LeftLG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::LeftLG& data); }; template<> struct api<grammar::LeftRG> { static grammar::LeftRG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::LeftRG& data); }; template<> struct api<grammar::RightLG> { static grammar::RightLG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::RightLG& data); }; template<> struct api<grammar::RightRG> { static grammar::RightRG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::RightRG& data); }; template<> struct api<grammar::LG> { static grammar::LG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::LG& data); }; template<> struct api<grammar::CFG> { static grammar::CFG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::CFG& data); }; template<> struct api<grammar::EpsilonFreeCFG> { static grammar::EpsilonFreeCFG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::EpsilonFreeCFG& data); }; template<> struct api<grammar::CNF> { static grammar::CNF parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::CNF& data); }; template<> struct api<grammar::GNF> { static grammar::GNF parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::GNF& data); }; template<> struct api<grammar::CSG> { static grammar::CSG parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::CSG& data); }; template<> struct api<grammar::NonContractingGrammar> { static grammar::NonContractingGrammar parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::NonContractingGrammar& data); }; template<> struct api<grammar::ContextPreservingUnrestrictedGrammar> { static grammar::ContextPreservingUnrestrictedGrammar parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::ContextPreservingUnrestrictedGrammar& data); }; template<> struct api<grammar::UnrestrictedGrammar> { static grammar::UnrestrictedGrammar parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const grammar::UnrestrictedGrammar& data); }; @@ -358,36 +476,42 @@ struct api<grammar::UnrestrictedGrammar> { template<> struct api<label::Label> { static label::Label parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const label::Label& data); }; template<> struct api<label::PrimitiveLabel> { static label::PrimitiveLabel parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const label::PrimitiveLabel& data); }; template<> struct api<label::HexavigesimalLabel> { static label::HexavigesimalLabel parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const label::HexavigesimalLabel& data); }; template<> struct api<label::ObjectLabel> { static label::ObjectLabel parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const label::ObjectLabel& data); }; template<> struct api<label::LabelSetLabel> { static label::LabelSetLabel parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const label::LabelSetLabel& data); }; template<> struct api<label::LabelPairLabel> { static label::LabelPairLabel parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const label::LabelPairLabel& data); }; @@ -395,18 +519,21 @@ struct api<label::LabelPairLabel> { template<> struct api<regexp::RegExp> { static regexp::RegExp parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const regexp::RegExp& data); }; template<> struct api<regexp::UnboundedRegExp> { static regexp::UnboundedRegExp parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const regexp::UnboundedRegExp& data); }; template<> struct api<regexp::FormalRegExp> { static regexp::FormalRegExp parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const regexp::FormalRegExp& data); }; @@ -414,24 +541,28 @@ struct api<regexp::FormalRegExp> { template<> struct api<string::String> { static string::String parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const string::String& data); }; template<> struct api<string::LinearString> { static string::LinearString parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const string::LinearString& data); }; template<> struct api<string::CyclicString> { static string::CyclicString parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const string::CyclicString& data); }; template<> struct api<string::Epsilon> { static string::Epsilon parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const string::Epsilon& data); }; @@ -439,54 +570,63 @@ struct api<string::Epsilon> { template<> struct api<primitive::Primitive> { static primitive::Primitive parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const primitive::Primitive& data); }; template<> struct api<primitive::String> { static primitive::String parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const primitive::String& data); }; template<> struct api<std::string> { static std::string parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const std::string& data); }; template<> struct api<primitive::Integer> { static primitive::Integer parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const primitive::Integer& data); }; template<> struct api<int> { static int parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(int data); }; template<> struct api<primitive::Character> { static primitive::Character parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const primitive::Character& data); }; template<> struct api<char> { static char parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(char data); }; template<> struct api<unsigned> { static unsigned parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(unsigned data); }; template<> struct api<bool> { static bool parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(bool data); }; @@ -501,6 +641,7 @@ namespace alib { template<> struct api<container::Container> { static container::Container parse(std::list<sax::Token>& input); + static bool first(const std::list<sax::Token>& input); static std::list<sax::Token> compose(const container::Container& data); }; @@ -610,6 +751,11 @@ std::set<T> api<std::set<T>>::parse(std::list<sax::Token>& input) { return FromXMLParsers::containerParser.parseSet<T>(input); } +template<typename T> +bool api<std::set<T>>::first(const std::list<sax::Token>& input) { + return input.front().getType() == sax::Token::TokenType::START_ELEMENT && input.front().getData() == Names::CONTAINER_OBJECTS_SET; +} + template<typename T> std::list<sax::Token> api<std::set<T>>::compose(const std::set<T>& input) { return ToXMLComposers::containerComposer.compose<T>(input); @@ -620,6 +766,11 @@ std::vector<T> api<std::vector<T>>::parse(std::list<sax::Token>& input) { return FromXMLParsers::containerParser.parseVector<T>(input); } +template<typename T> +bool api<std::vector<T>>::first(const std::list<sax::Token>& input) { + return input.front().getType() == sax::Token::TokenType::START_ELEMENT && input.front().getData() == Names::CONTAINER_OBJECTS_VECTOR; +} + template<typename T> std::list<sax::Token> api<std::vector<T>>::compose(const std::vector<T>& input) { return ToXMLComposers::containerComposer.compose<T>(input); @@ -630,6 +781,11 @@ std::pair<T, R> api<std::pair<T, R>>::parse(std::list<sax::Token>& input) { return FromXMLParsers::containerParser.parsePair<T, R>(input); } +template<typename T, typename R> +bool api<std::pair<T, R>>::first(const std::list<sax::Token>& input) { + return input.front().getType() == sax::Token::TokenType::START_ELEMENT && input.front().getData() == Names::CONTAINER_OBJECTS_PAIR; +} + template<typename T, typename R> std::list<sax::Token> api<std::pair<T, R>>::compose(const std::pair<T, R>& input) { return ToXMLComposers::containerComposer.compose<T, R>(input); @@ -640,6 +796,11 @@ std::map<T, R> api<std::map<T, R>>::parse(std::list<sax::Token>& input) { return FromXMLParsers::containerParser.parseMap<T, R>(input); } +template<typename T, typename R> +bool api<std::map<T, R>>::first(const std::list<sax::Token>& input) { + return input.front().getType() == sax::Token::TokenType::START_ELEMENT && input.front().getData() == Names::CONTAINER_OBJECTS_MAP; +} + template<typename T, typename R> std::list<sax::Token> api<std::map<T, R>>::compose(const std::map<T, R>& input) { return ToXMLComposers::containerComposer.compose<T, R>(input); diff --git a/alib2data/src/alphabet/SymbolFromXMLParser.cpp b/alib2data/src/alphabet/SymbolFromXMLParser.cpp index 69356b756dd5d76d091ce050fbcbf2c8f86157f4..2faa352f8754b20bc7416e5a06ef9c0a93694b4a 100644 --- a/alib2data/src/alphabet/SymbolFromXMLParser.cpp +++ b/alib2data/src/alphabet/SymbolFromXMLParser.cpp @@ -19,28 +19,28 @@ Symbol SymbolFromXMLParser::parseSymbol(std::list<sax::Token>& input) const { } Symbol SymbolFromXMLParser::parseSymbol(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LabeledSymbol")) { + if(alib::api<LabeledSymbol>::first(input)) { if(!features.count(FEATURES::LABELED)) throw exception::AlibException(); return Symbol(parseLabeledSymbol(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "BlankSymbol")) { + } else if(alib::api<BlankSymbol>::first(input)) { if(!features.count(FEATURES::BLANK)) throw exception::AlibException(); return Symbol(parseBlankSymbol(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "BottomOfTheStackSymbol")) { + } else if(alib::api<BottomOfTheStackSymbol>::first(input)) { if(!features.count(FEATURES::BOTTOM)) throw exception::AlibException(); return Symbol(parseBottomOfTheStackSymbol(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "EndSymbol")) { + } else if(alib::api<EndSymbol>::first(input)) { if(!features.count(FEATURES::END)) throw exception::AlibException(); return Symbol(parseEndSymbol(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "RankedSymbol")) { + } else if(alib::api<RankedSymbol>::first(input)) { if(!features.count(FEATURES::RANKED)) throw exception::AlibException(); return Symbol(parseRankedSymbol(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "BarSymbol")) { + } else if(alib::api<BarSymbol>::first(input)) { if(!features.count(FEATURES::BAR)) throw exception::AlibException(); return Symbol(parseBarSymbol(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "RankedBarSymbol")) { + } else if(alib::api<RankedBarSymbol>::first(input)) { if(!features.count(FEATURES::RANKED_BAR)) throw exception::AlibException(); return Symbol(parseRankedBarSymbol(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "SubtreeWildcardSymbol")) { + } else if(alib::api<SubtreeWildcardSymbol>::first(input)) { if(!features.count(FEATURES::SUBTREE_WILDCARD)) throw exception::AlibException(); return Symbol(parseSubtreeWildcardSymbol(input)); } else { @@ -48,8 +48,8 @@ Symbol SymbolFromXMLParser::parseSymbol(std::list<sax::Token>& input, const std: } } -bool SymbolFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LabeledSymbol") || isToken(input, sax::Token::TokenType::START_ELEMENT, "BlankSymbol") || isToken(input, sax::Token::TokenType::START_ELEMENT, "BottomOfTheStackSymbol") || isToken(input, sax::Token::TokenType::START_ELEMENT, "EndSymbol") || isToken(input, sax::Token::TokenType::START_ELEMENT, "RankedSymbol") || isToken(input, sax::Token::TokenType::START_ELEMENT, "BarSymbol") || isToken(input, sax::Token::TokenType::START_ELEMENT, "RankedBarSymbol") || isToken(input, sax::Token::TokenType::START_ELEMENT, "SubtreeWildcardSymbol")) { +bool SymbolFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<LabeledSymbol>::first(input) || alib::api<BlankSymbol>::first(input) || alib::api<BottomOfTheStackSymbol>::first(input) || alib::api<EndSymbol>::first(input) || alib::api<RankedSymbol>::first(input) || alib::api<BarSymbol>::first(input) || alib::api<RankedBarSymbol>::first(input) || alib::api<SubtreeWildcardSymbol>::first(input)) { return true; } else { return false; @@ -57,54 +57,54 @@ bool SymbolFromXMLParser::first(std::list<sax::Token>& input) const { } LabeledSymbol SymbolFromXMLParser::parseLabeledSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "LabeledSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_LABELED_SYMBOL); label::Label data = alib::api<label::Label>::parse(input); - popToken(input, sax::Token::TokenType::END_ELEMENT, "LabeledSymbol"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_LABELED_SYMBOL); return LabeledSymbol(data); } BlankSymbol SymbolFromXMLParser::parseBlankSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "BlankSymbol"); - popToken(input, sax::Token::TokenType::END_ELEMENT, "BlankSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_BLANK_SYMBOL); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_BLANK_SYMBOL); return BlankSymbol(); } BottomOfTheStackSymbol SymbolFromXMLParser::parseBottomOfTheStackSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "BottomOfTheStackSymbol"); - popToken(input, sax::Token::TokenType::END_ELEMENT, "BottomOfTheStackSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_BOTTOM_OF_THE_STACK_SYMBOL); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_BOTTOM_OF_THE_STACK_SYMBOL); return BottomOfTheStackSymbol(); } EndSymbol SymbolFromXMLParser::parseEndSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "EndSymbol"); - popToken(input, sax::Token::TokenType::END_ELEMENT, "EndSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_END_SYMBOL); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_END_SYMBOL); return EndSymbol(); } RankedSymbol SymbolFromXMLParser::parseRankedSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "RankedSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_RANKED_SYMBOL); label::Label data = alib::api<label::Label>::parse(input); primitive::Integer rank = alib::api<primitive::Integer>::parse(input); - popToken(input, sax::Token::TokenType::END_ELEMENT, "RankedSymbol"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_RANKED_SYMBOL); return RankedSymbol(data, rank); } BarSymbol SymbolFromXMLParser::parseBarSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "BarSymbol"); - popToken(input, sax::Token::TokenType::END_ELEMENT, "BarSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_BAR_SYMBOL); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_BAR_SYMBOL); return BarSymbol(); } RankedBarSymbol SymbolFromXMLParser::parseRankedBarSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "RankedBarSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_RANKED_BAR_SYMBOL); primitive::Integer rank = alib::api<primitive::Integer>::parse(input); - popToken(input, sax::Token::TokenType::END_ELEMENT, "RankedBarSymbol"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_RANKED_BAR_SYMBOL); return RankedBarSymbol(rank); } SubtreeWildcardSymbol SymbolFromXMLParser::parseSubtreeWildcardSymbol(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "SubtreeWildcardSymbol"); - popToken(input, sax::Token::TokenType::END_ELEMENT, "SubtreeWildcardSymbol"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALPHABET_SUBTREE_WILDCARD_SYMBOL); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALPHABET_SUBTREE_WILDCARD_SYMBOL); return SubtreeWildcardSymbol(); } diff --git a/alib2data/src/alphabet/SymbolFromXMLParser.h b/alib2data/src/alphabet/SymbolFromXMLParser.h index 49a7d4ac30650a4f1e1d1b308c49e878473ee6f1..c0b6d20db13e4a84be82bec31b56102bf0dd1c27 100644 --- a/alib2data/src/alphabet/SymbolFromXMLParser.h +++ b/alib2data/src/alphabet/SymbolFromXMLParser.h @@ -52,7 +52,7 @@ class SymbolFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace alphabet */ diff --git a/alib2data/src/alphabet/SymbolToXMLComposer.cpp b/alib2data/src/alphabet/SymbolToXMLComposer.cpp index 7c5f4e14d369dc2b332ed811a5157ff52fa52dbf..b3ef0a2025e1dab5eb1fe288624b5fe42b00ac1a 100644 --- a/alib2data/src/alphabet/SymbolToXMLComposer.cpp +++ b/alib2data/src/alphabet/SymbolToXMLComposer.cpp @@ -25,61 +25,61 @@ std::list<sax::Token> SymbolToXMLComposer::compose(const SymbolBase& symbol) con std::list<sax::Token> SymbolToXMLComposer::compose(const LabeledSymbol& symbol) const { std::list<sax::Token> out; - out.push_back(sax::Token("LabeledSymbol", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_LABELED_SYMBOL, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<label::Label>::compose(symbol.getLabel())); - out.push_back(sax::Token("LabeledSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_LABELED_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> SymbolToXMLComposer::compose(const BlankSymbol&) const { std::list<sax::Token> out; - out.push_back(sax::Token("BlankSymbol", sax::Token::TokenType::START_ELEMENT)); - out.push_back(sax::Token("BlankSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_BLANK_SYMBOL, sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_BLANK_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> SymbolToXMLComposer::compose(const BottomOfTheStackSymbol&) const { std::list<sax::Token> out; - out.push_back(sax::Token("BottomOfTheStackSymbol", sax::Token::TokenType::START_ELEMENT)); - out.push_back(sax::Token("BottomOfTheStackSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_BOTTOM_OF_THE_STACK_SYMBOL, sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_BOTTOM_OF_THE_STACK_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> SymbolToXMLComposer::compose(const EndSymbol&) const { std::list<sax::Token> out; - out.push_back(sax::Token("EndSymbol", sax::Token::TokenType::START_ELEMENT)); - out.push_back(sax::Token("EndSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_END_SYMBOL, sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_END_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> SymbolToXMLComposer::compose(const RankedSymbol& symbol) const { std::list<sax::Token> out; - out.push_back(sax::Token("RankedSymbol", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_RANKED_SYMBOL, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<label::Label>::compose(symbol.getLabel())); out.splice(out.end(), alib::api<primitive::Integer>::compose(symbol.getRank())); - out.push_back(sax::Token("RankedSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_RANKED_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> SymbolToXMLComposer::compose(const BarSymbol&) const { std::list<sax::Token> out; - out.push_back(sax::Token("BarSymbol", sax::Token::TokenType::START_ELEMENT)); - out.push_back(sax::Token("BarSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_BAR_SYMBOL, sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_BAR_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> SymbolToXMLComposer::compose(const RankedBarSymbol& symbol) const { std::list<sax::Token> out; - out.push_back(sax::Token("RankedBarSymbol", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_RANKED_BAR_SYMBOL, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<primitive::Integer>::compose(symbol.getRank())); - out.push_back(sax::Token("RankedBarSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_RANKED_BAR_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> SymbolToXMLComposer::compose(const SubtreeWildcardSymbol&) const { std::list<sax::Token> out; - out.push_back(sax::Token("SubtreeWildcardSymbol", sax::Token::TokenType::START_ELEMENT)); - out.push_back(sax::Token("SubtreeWildcardSymbol", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_SUBTREE_WILDCARD_SYMBOL, sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALPHABET_SUBTREE_WILDCARD_SYMBOL, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.cpp b/alib2data/src/automaton/AutomatonFromXMLParser.cpp index f160633e106a4ba86e3cd1d7092b7753beca8d89..b54b892fc79fd499be7f7d31b72e6f6fa57f0876 100644 --- a/alib2data/src/automaton/AutomatonFromXMLParser.cpp +++ b/alib2data/src/automaton/AutomatonFromXMLParser.cpp @@ -20,60 +20,60 @@ Automaton AutomatonFromXMLParser::parseAutomaton(std::list<sax::Token> &input) c } Automaton AutomatonFromXMLParser::parseAutomaton(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "EpsilonNFA")) { + if(alib::api<EpsilonNFA>::first(input)) { if(!features.count(FEATURES::EPSILON_NFA)) throw exception::AlibException(); return Automaton(parseEpsilonNFA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "MultiInitialStateNFA")) { + } else if(alib::api<MultiInitialStateNFA>::first(input)) { if(!features.count(FEATURES::MULTI_INITIAL_STATE_NFA)) throw exception::AlibException(); return Automaton(parseMultiInitialStateNFA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "NFA")) { + } else if(alib::api<NFA>::first(input)) { if(!features.count(FEATURES::NFA)) throw exception::AlibException(); return Automaton(parseNFA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "DFA")) { + } else if(alib::api<DFA>::first(input)) { if(!features.count(FEATURES::DFA)) throw exception::AlibException(); return Automaton(parseDFA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "CompactNFA")) { + } else if(alib::api<CompactNFA>::first(input)) { if(!features.count(FEATURES::COMPACT_NFA)) throw exception::AlibException(); return Automaton(parseCompactNFA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "ExtendedNFA")) { + } else if(alib::api<ExtendedNFA>::first(input)) { if(!features.count(FEATURES::EXTENDED_NFA)) throw exception::AlibException(); return Automaton(parseExtendedNFA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "DPDA")) { + } else if(alib::api<DPDA>::first(input)) { if(!features.count(FEATURES::DPDA)) throw exception::AlibException(); return Automaton(parseDPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "SinglePopDPDA")) { + } else if(alib::api<SinglePopDPDA>::first(input)) { if(!features.count(FEATURES::SINGLE_POP_DPDA)) throw exception::AlibException(); return Automaton(parseSinglePopDPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "InputDrivenNPDA")) { + } else if(alib::api<InputDrivenNPDA>::first(input)) { if(!features.count(FEATURES::INPUT_DRIVEN_NPDA)) throw exception::AlibException(); return Automaton(parseInputDrivenNPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "VisiblyPushdownDPDA")) { + } else if(alib::api<VisiblyPushdownDPDA>::first(input)) { if(!features.count(FEATURES::VISIBLY_PUSHDOWN_DPDA)) throw exception::AlibException(); return Automaton(parseVisiblyPushdownDPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "VisiblyPushdownNPDA")) { + } else if(alib::api<VisiblyPushdownNPDA>::first(input)) { if(!features.count(FEATURES::VISIBLY_PUSHDOWN_NPDA)) throw exception::AlibException(); return Automaton(parseVisiblyPushdownNPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "RealTimeHeightDeterministicDPDA")) { + } else if(alib::api<RealTimeHeightDeterministicDPDA>::first(input)) { if(!features.count(FEATURES::REAL_TIME_HEIGHT_DETERMINISTIC_DPDA)) throw exception::AlibException(); return Automaton(parseRealTimeHeightDeterministicDPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "RealTimeHeightDeterministicNPDA")) { + } else if(alib::api<RealTimeHeightDeterministicNPDA>::first(input)) { if(!features.count(FEATURES::REAL_TIME_HEIGHT_DETERMINISTIC_NPDA)) throw exception::AlibException(); return Automaton(parseRealTimeHeightDeterministicNPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "NPDA")) { + } else if(alib::api<NPDA>::first(input)) { if(!features.count(FEATURES::NPDA)) throw exception::AlibException(); return Automaton(parseNPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "SinglePopNPDA")) { + } else if(alib::api<SinglePopNPDA>::first(input)) { if(!features.count(FEATURES::SINGLE_POP_NPDA)) throw exception::AlibException(); return Automaton(parseSinglePopNPDA(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "OneTapeDTM")) { + } else if(alib::api<OneTapeDTM>::first(input)) { if(!features.count(FEATURES::ONE_TAPE_DTM)) throw exception::AlibException(); return Automaton(parseOneTapeDTM(input)); } else throw sax::ParserException(sax::Token("Automaton / EpsilonNFA / NFA / DFA / CompactNFA / ExtendedNFA / DPDA / SinglePopDPDA / InputDrivenNPDA / VisiblyPushdownDPDA / VisiblyPushdownNPDA / RealTimeHeightDeterministicDPDA / RealTimeHeightDeterministicNPDA / NPDA / SinglePopNPDA / OneTapeDTM", sax::Token::TokenType::START_ELEMENT), input.front()); } -bool AutomatonFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "automaton") || isToken(input, sax::Token::TokenType::START_ELEMENT, "EpsilonNFA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "NFA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "DFA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "CompactNFA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "ExtendedNFA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "DPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "SinglePopDPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "InputDrivenNPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "VisiblyPushdownDPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "VisiblyPushdownNPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "RealTimeHeightDeterministicDPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "RealTimeHeightDeterministicNPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "NPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "SinglePopNPDA") || isToken(input, sax::Token::TokenType::START_ELEMENT, "OneTapeDTM")) { +bool AutomatonFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<EpsilonNFA>::first(input) || alib::api<NFA>::first(input) || alib::api<DFA>::first(input) || alib::api<CompactNFA>::first(input) || alib::api<ExtendedNFA>::first(input) || alib::api<DPDA>::first(input) || alib::api<SinglePopDPDA>::first(input) || alib::api<InputDrivenNPDA>::first(input) || alib::api<VisiblyPushdownDPDA>::first(input) || alib::api<VisiblyPushdownNPDA>::first(input) || alib::api<RealTimeHeightDeterministicDPDA>::first(input) || alib::api<RealTimeHeightDeterministicNPDA>::first(input) || alib::api<NPDA>::first(input) || alib::api<SinglePopNPDA>::first(input) || alib::api<OneTapeDTM>::first(input)) { return true; } else { return false; @@ -90,7 +90,7 @@ void AutomatonFromXMLParser::parseTransitions(std::list<sax::Token> &input, T& a } DFA AutomatonFromXMLParser::parseDFA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "DFA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_DFA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -104,12 +104,12 @@ DFA AutomatonFromXMLParser::parseDFA(std::list<sax::Token>& input) const { parseTransitions<DFA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "DFA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_DFA); return automaton; } NFA AutomatonFromXMLParser::parseNFA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "NFA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_NFA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -123,12 +123,12 @@ NFA AutomatonFromXMLParser::parseNFA(std::list<sax::Token>& input) const { parseTransitions<NFA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "NFA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_NFA); return automaton; } MultiInitialStateNFA AutomatonFromXMLParser::parseMultiInitialStateNFA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "MultiInitialStateNFA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_MULTI_INITIAL_STATE_NFA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -143,12 +143,12 @@ MultiInitialStateNFA AutomatonFromXMLParser::parseMultiInitialStateNFA(std::list parseTransitions<MultiInitialStateNFA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "MultiInitialStateNFA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_MULTI_INITIAL_STATE_NFA); return automaton; } EpsilonNFA AutomatonFromXMLParser::parseEpsilonNFA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "EpsilonNFA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_EPSILON_NFA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -162,12 +162,12 @@ EpsilonNFA AutomatonFromXMLParser::parseEpsilonNFA(std::list<sax::Token>& input) parseTransitions<EpsilonNFA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "EpsilonNFA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_EPSILON_NFA); return automaton; } CompactNFA AutomatonFromXMLParser::parseCompactNFA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "CompactNFA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_COMPACT_NFA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -181,12 +181,12 @@ CompactNFA AutomatonFromXMLParser::parseCompactNFA(std::list<sax::Token>& input) parseTransitions<CompactNFA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "CompactNFA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_COMPACT_NFA); return automaton; } ExtendedNFA AutomatonFromXMLParser::parseExtendedNFA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "ExtendedNFA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_EXTENDED_NFA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -200,12 +200,12 @@ ExtendedNFA AutomatonFromXMLParser::parseExtendedNFA(std::list<sax::Token>& inpu parseTransitions<ExtendedNFA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "ExtendedNFA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_EXTENDED_NFA); return automaton; } DPDA AutomatonFromXMLParser::parseDPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "DPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_DPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -222,13 +222,13 @@ DPDA AutomatonFromXMLParser::parseDPDA(std::list<sax::Token>& input) const { parseTransitions<DPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "DPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_DPDA); return automaton; } SinglePopDPDA AutomatonFromXMLParser::parseSinglePopDPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "SinglePopDPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_SINGLE_POP_DPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -245,13 +245,13 @@ SinglePopDPDA AutomatonFromXMLParser::parseSinglePopDPDA(std::list<sax::Token>& parseTransitions<SinglePopDPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "SinglePopDPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_SINGLE_POP_DPDA); return automaton; } InputDrivenNPDA AutomatonFromXMLParser::parseInputDrivenNPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "InputDrivenNPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_INPUT_DRIVEN_NPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -270,13 +270,13 @@ InputDrivenNPDA AutomatonFromXMLParser::parseInputDrivenNPDA(std::list<sax::Toke parseInputToPushdownStoreOperation(input, automaton); parseTransitions<InputDrivenNPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "InputDrivenNPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_INPUT_DRIVEN_NPDA); return automaton; } VisiblyPushdownDPDA AutomatonFromXMLParser::parseVisiblyPushdownDPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "VisiblyPushdownDPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_DPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> callInputSymbols = parseCallInputAlphabet(input); @@ -297,13 +297,13 @@ VisiblyPushdownDPDA AutomatonFromXMLParser::parseVisiblyPushdownDPDA(std::list<s parseTransitions<VisiblyPushdownDPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "VisiblyPushdownDPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_DPDA); return automaton; } VisiblyPushdownNPDA AutomatonFromXMLParser::parseVisiblyPushdownNPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "VisiblyPushdownNPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_NPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> callInputSymbols = parseCallInputAlphabet(input); @@ -325,13 +325,13 @@ VisiblyPushdownNPDA AutomatonFromXMLParser::parseVisiblyPushdownNPDA(std::list<s parseTransitions<VisiblyPushdownNPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "VisiblyPushdownNPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_NPDA); return automaton; } RealTimeHeightDeterministicDPDA AutomatonFromXMLParser::parseRealTimeHeightDeterministicDPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "RealTimeHeightDeterministicDPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -348,13 +348,13 @@ RealTimeHeightDeterministicDPDA AutomatonFromXMLParser::parseRealTimeHeightDeter parseTransitions<RealTimeHeightDeterministicDPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "RealTimeHeightDeterministicDPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA); return automaton; } RealTimeHeightDeterministicNPDA AutomatonFromXMLParser::parseRealTimeHeightDeterministicNPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "RealTimeHeightDeterministicNPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -372,13 +372,13 @@ RealTimeHeightDeterministicNPDA AutomatonFromXMLParser::parseRealTimeHeightDeter parseTransitions<RealTimeHeightDeterministicNPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "RealTimeHeightDeterministicNPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA); return automaton; } NPDA AutomatonFromXMLParser::parseNPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "NPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_NPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -397,13 +397,13 @@ NPDA AutomatonFromXMLParser::parseNPDA(std::list<sax::Token>& input) const { parseTransitions<NPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "NPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_NPDA); return automaton; } SinglePopNPDA AutomatonFromXMLParser::parseSinglePopNPDA(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "SinglePopNPDA"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_SINGLE_POP_NPDA); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -422,13 +422,13 @@ SinglePopNPDA AutomatonFromXMLParser::parseSinglePopNPDA(std::list<sax::Token>& parseTransitions<SinglePopNPDA>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "SinglePopNPDA"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_SINGLE_POP_NPDA); return automaton; } OneTapeDTM AutomatonFromXMLParser::parseOneTapeDTM(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "OneTapeTM"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_ONE_TAPE_DTM); std::set<State> states = parseStates(input); std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input); @@ -446,7 +446,7 @@ OneTapeDTM AutomatonFromXMLParser::parseOneTapeDTM(std::list<sax::Token>& input) parseTransitions<OneTapeDTM>(input, automaton); - popToken(input, sax::Token::TokenType::END_ELEMENT, "OneTapeTM"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::AUTOMATON_ONE_TAPE_DTM); return automaton; } diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.h b/alib2data/src/automaton/AutomatonFromXMLParser.h index f639bd1aeb2850336d73b607fff2bfa3d44bcfe8..ca58eb5db5ecf19ab1528a7230c799c48199d277 100644 --- a/alib2data/src/automaton/AutomatonFromXMLParser.h +++ b/alib2data/src/automaton/AutomatonFromXMLParser.h @@ -126,7 +126,7 @@ class AutomatonFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace automaton */ diff --git a/alib2data/src/automaton/AutomatonToXMLComposer.cpp b/alib2data/src/automaton/AutomatonToXMLComposer.cpp index 13a6342588aaceb6449058db70ce914bc8266ad7..2f96ee71545727f590aec51ae8887b434d2b3f01 100644 --- a/alib2data/src/automaton/AutomatonToXMLComposer.cpp +++ b/alib2data/src/automaton/AutomatonToXMLComposer.cpp @@ -592,7 +592,7 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const AutomatonBase& autom std::list<sax::Token> AutomatonToXMLComposer::compose(const DFA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("DFA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_DFA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -600,13 +600,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const DFA& automaton) cons composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("DFA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_DFA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const NFA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("NFA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_NFA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -614,13 +614,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const NFA& automaton) cons composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("NFA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_NFA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const MultiInitialStateNFA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("MultiInitialStateNFA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_MULTI_INITIAL_STATE_NFA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -628,13 +628,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const MultiInitialStateNFA composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("MultiInitialStateNFA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_MULTI_INITIAL_STATE_NFA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const EpsilonNFA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("EpsilonNFA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_EPSILON_NFA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -642,13 +642,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const EpsilonNFA& automato composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("EpsilonNFA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_EPSILON_NFA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const ExtendedNFA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("ExtendedNFA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_EXTENDED_NFA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -656,13 +656,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const ExtendedNFA& automat composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("ExtendedNFA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_EXTENDED_NFA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const CompactNFA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("CompactNFA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_COMPACT_NFA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -670,13 +670,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const CompactNFA& automato composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("CompactNFA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_COMPACT_NFA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const DPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("DPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_DPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -686,13 +686,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const DPDA& automaton) con composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("DPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_DPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopDPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("SinglePopDPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_SINGLE_POP_DPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -702,13 +702,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopDPDA& autom composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("SinglePopDPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_SINGLE_POP_DPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const InputDrivenNPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("InputDrivenNPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_INPUT_DRIVEN_NPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -719,13 +719,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const InputDrivenNPDA& aut composeInputToPushdownStoreOperation(out, automaton); composeTransitions(out, automaton); - out.push_back(sax::Token("InputDrivenNPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_INPUT_DRIVEN_NPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const VisiblyPushdownDPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("VisiblyPushdownDPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_DPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeCallInputAlphabet(out, automaton.getCallInputAlphabet()); @@ -737,13 +737,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const VisiblyPushdownDPDA& composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("VisiblyPushdownDPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_DPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const VisiblyPushdownNPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("VisiblyPushdownNPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_NPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeCallInputAlphabet(out, automaton.getCallInputAlphabet()); @@ -755,13 +755,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const VisiblyPushdownNPDA& composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("VisiblyPushdownNPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_VISIBLY_PUSHDOWN_NPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const RealTimeHeightDeterministicDPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("RealTimeHeightDeterministicDPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -771,13 +771,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const RealTimeHeightDeterm composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("RealTimeHeightDeterministicDPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_DPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const RealTimeHeightDeterministicNPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("RealTimeHeightDeterministicNPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -787,13 +787,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const RealTimeHeightDeterm composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("RealTimeHeightDeterministicNPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_REAL_TIME_HEIGHT_DETERMINISTIC_NPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const NPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("NPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_NPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -803,13 +803,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const NPDA& automaton) con composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("NPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_NPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopNPDA& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("SinglePopNPDA", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_SINGLE_POP_NPDA, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -819,13 +819,13 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopNPDA& autom composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("SinglePopNPDA", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_SINGLE_POP_NPDA, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> AutomatonToXMLComposer::compose(const OneTapeDTM& automaton) const { std::list<sax::Token> out; - out.push_back(sax::Token("OneTapeDTM", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_ONE_TAPE_DTM, sax::Token::TokenType::START_ELEMENT)); composeStates(out, automaton.getStates()); composeInputAlphabet(out, automaton.getInputAlphabet()); @@ -835,7 +835,7 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const OneTapeDTM& automato composeFinalStates(out, automaton.getFinalStates()); composeTransitions(out, automaton); - out.push_back(sax::Token("OneTapeDTM", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::AUTOMATON_ONE_TAPE_DTM, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/container/ContainerFromXMLParser.cpp b/alib2data/src/container/ContainerFromXMLParser.cpp index 29ff8913abd6f78d96f06ec4be086a06ccbb39fe..540532b4307fe093f3d0c4f828fa4513e4a9383e 100644 --- a/alib2data/src/container/ContainerFromXMLParser.cpp +++ b/alib2data/src/container/ContainerFromXMLParser.cpp @@ -10,29 +10,21 @@ namespace container { -bool ContainerFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "set") || isToken(input, sax::Token::TokenType::START_ELEMENT, "vector") || isToken(input, sax::Token::TokenType::START_ELEMENT, "pair") || isToken(input, sax::Token::TokenType::START_ELEMENT, "map")) { - return true; - } else { - return false; - } -} - Container ContainerFromXMLParser::parseContainer(std::list<sax::Token>& input) const { return parseContainer(input, std::set<FEATURES>({FEATURES::SET, FEATURES::VECTOR, FEATURES::PAIR, FEATURES::MAP})); } Container ContainerFromXMLParser::parseContainer(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "set")) { + if(alib::api<ObjectsSet>::first(input)) { if(!features.count(FEATURES::SET)) throw exception::AlibException(); return Container(parseObjectsSet(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "vector")) { + } else if(alib::api<ObjectsVector>::first(input)) { if(!features.count(FEATURES::VECTOR)) throw exception::AlibException(); return Container(parseObjectsVector(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "pair")) { + } else if(alib::api<ObjectsPair>::first(input)) { if(!features.count(FEATURES::PAIR)) throw exception::AlibException(); return Container(parseObjectsPair(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "map")) { + } else if(alib::api<ObjectsMap>::first(input)) { if(!features.count(FEATURES::MAP)) throw exception::AlibException(); return Container(parseObjectsMap(input)); } else { @@ -40,8 +32,16 @@ Container ContainerFromXMLParser::parseContainer(std::list<sax::Token>& input, c } } +bool ContainerFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<ObjectsSet>::first(input) || alib::api<ObjectsVector>::first(input) || alib::api<ObjectsPair>::first(input) || alib::api<ObjectsMap>::first(input)) { + return true; + } else { + return false; + } +} + ObjectsSet ContainerFromXMLParser::parseObjectsSet(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "set"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_SET); ObjectsSet set; @@ -49,12 +49,12 @@ ObjectsSet ContainerFromXMLParser::parseObjectsSet(std::list<sax::Token>& input) set.insert(alib::api<alib::Object>::parse(input)); } - popToken(input, sax::Token::TokenType::END_ELEMENT, "set"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_SET); return set; } ObjectsVector ContainerFromXMLParser::parseObjectsVector(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "vector"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_VECTOR); ObjectsVector vector; @@ -62,31 +62,31 @@ ObjectsVector ContainerFromXMLParser::parseObjectsVector(std::list<sax::Token>& vector.push_back(alib::api<alib::Object>::parse(input)); } - popToken(input, sax::Token::TokenType::END_ELEMENT, "vector"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_VECTOR); return vector; } ObjectsPair ContainerFromXMLParser::parseObjectsPair(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "pair"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_PAIR); alib::Object first = alib::api<alib::Object>::parse(input); alib::Object second = alib::api<alib::Object>::parse(input); ObjectsPair pair(first, second); - popToken(input, sax::Token::TokenType::END_ELEMENT, "pair"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_PAIR); return pair; } ObjectsMap ContainerFromXMLParser::parseObjectsMap(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "map"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_MAP); ObjectsMap map; while(isTokenType(input, sax::Token::TokenType::START_ELEMENT)) { map.insert(alib::api<std::pair<alib::Object, alib::Object>>::parse(input)); } - popToken(input, sax::Token::TokenType::END_ELEMENT, "map"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_MAP); return map; } diff --git a/alib2data/src/container/ContainerFromXMLParser.hpp b/alib2data/src/container/ContainerFromXMLParser.hpp index ab4d4248cbccc63ae926513c57599cbf665769e1..d59a7146b3c08b1e3193a5e8e69a809d39809d61 100644 --- a/alib2data/src/container/ContainerFromXMLParser.hpp +++ b/alib2data/src/container/ContainerFromXMLParser.hpp @@ -57,7 +57,7 @@ class ContainerFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace container */ @@ -68,7 +68,7 @@ namespace container { template<typename T> std::set<T> ContainerFromXMLParser::parseSet(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "set"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_SET); std::set<T> set; @@ -76,13 +76,13 @@ std::set<T> ContainerFromXMLParser::parseSet(std::list<sax::Token>& input) const set.insert(alib::api<T>::parse(input)); } - popToken(input, sax::Token::TokenType::END_ELEMENT, "set"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_SET); return set; } template<typename T> std::vector<T> ContainerFromXMLParser::parseVector(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "vector"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_VECTOR); std::vector<T> vector; @@ -90,24 +90,24 @@ std::vector<T> ContainerFromXMLParser::parseVector(std::list<sax::Token>& input) vector.push_back(alib::api<T>::parse(input)); } - popToken(input, sax::Token::TokenType::END_ELEMENT, "vector"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_VECTOR); return vector; } template<typename T, typename R> std::pair<T, R> ContainerFromXMLParser::parsePair(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "pair"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_PAIR); T first = alib::api<T>::parse(input); R second = alib::api<R>::parse(input); - popToken(input, sax::Token::TokenType::END_ELEMENT, "pair"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_PAIR); return std::make_pair(first, second); } template<typename T, typename R> std::map<T, R> ContainerFromXMLParser::parseMap(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "map"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::CONTAINER_OBJECTS_MAP); std::map<T, R> map; @@ -115,7 +115,7 @@ std::map<T, R> ContainerFromXMLParser::parseMap(std::list<sax::Token>& input) co map.insert(alib::api<std::pair<T, R>>::parse(input)); } - popToken(input, sax::Token::TokenType::END_ELEMENT, "map"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::CONTAINER_OBJECTS_MAP); return map; } diff --git a/alib2data/src/container/ContainerToXMLComposer.cpp b/alib2data/src/container/ContainerToXMLComposer.cpp index ecfad0e3c7948f59c69e019b3d0c6fcce82768a7..e6a5cee3181774768f7cd2f6ee021ff564c51410 100644 --- a/alib2data/src/container/ContainerToXMLComposer.cpp +++ b/alib2data/src/container/ContainerToXMLComposer.cpp @@ -23,48 +23,48 @@ std::list<sax::Token> ContainerToXMLComposer::compose(const Container& container std::list<sax::Token> ContainerToXMLComposer::compose(const ObjectsSet& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("set", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_SET, sax::Token::TokenType::START_ELEMENT)); for(const alib::Object& item : container) { out.splice(out.end(), alib::api<alib::Object>::compose(item)); } - out.push_back(sax::Token("set", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_SET, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> ContainerToXMLComposer::compose(const ObjectsVector& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("vector", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_VECTOR, sax::Token::TokenType::START_ELEMENT)); for(const alib::Object& item : container) { out.splice(out.end(), alib::api<alib::Object>::compose(item)); } - out.push_back(sax::Token("vector", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_VECTOR, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> ContainerToXMLComposer::compose(const ObjectsPair& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("pair", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_PAIR, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<alib::Object>::compose(container.first)); out.splice(out.end(), alib::api<alib::Object>::compose(container.second)); - out.push_back(sax::Token("pair", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_PAIR, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> ContainerToXMLComposer::compose(const ObjectsMap& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("map", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_MAP, sax::Token::TokenType::START_ELEMENT)); for(const std::pair<alib::Object, alib::Object>& item : container) { out.splice(out.end(), alib::api<std::pair<alib::Object, alib::Object>>::compose(item)); } - out.push_back(sax::Token("map", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_MAP, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/container/ContainerToXMLComposer.hpp b/alib2data/src/container/ContainerToXMLComposer.hpp index 7e6f4fa0c379b9f0ca33495f79f7781684937a4e..34de226b2bf6b7eb258daac3feac9b0740bd2994 100644 --- a/alib2data/src/container/ContainerToXMLComposer.hpp +++ b/alib2data/src/container/ContainerToXMLComposer.hpp @@ -75,51 +75,51 @@ namespace container { template<typename T> std::list<sax::Token> ContainerToXMLComposer::compose(const std::set<T>& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("set", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_SET, sax::Token::TokenType::START_ELEMENT)); for(const T& item : container) { out.splice(out.end(), alib::api<T>::compose(item)); } - out.push_back(sax::Token("set", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_SET, sax::Token::TokenType::END_ELEMENT)); return out; } template<typename T> std::list<sax::Token> ContainerToXMLComposer::compose(const std::vector<T>& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("vector", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_VECTOR, sax::Token::TokenType::START_ELEMENT)); for(const T& item : container) { out.splice(out.end(), alib::api<T>::compose(item)); } - out.push_back(sax::Token("vector", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_VECTOR, sax::Token::TokenType::END_ELEMENT)); return out; } template<typename T, typename R> std::list<sax::Token> ContainerToXMLComposer::compose(const std::pair<T, R>& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("pair", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_PAIR, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<T>::compose(container.first)); out.splice(out.end(), alib::api<R>::compose(container.second)); - out.push_back(sax::Token("pair", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_PAIR, sax::Token::TokenType::END_ELEMENT)); return out; } template<typename T, typename R> std::list<sax::Token> ContainerToXMLComposer::compose(const std::map<T, R>& container) const { std::list<sax::Token> out; - out.push_back(sax::Token("map", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_MAP, sax::Token::TokenType::START_ELEMENT)); for(const std::pair<T, R>& item : container) { out.splice(out.end(), alib::api<std::pair<T, R>>::compose(item)); } - out.push_back(sax::Token("map", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::CONTAINER_OBJECTS_MAP, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/exception/AlibException.cpp b/alib2data/src/exception/AlibException.cpp index ab7e44fc1815c7b1490bd18b78c8463375c82538..8571d7527d2749e35580d69f5272c6c0f7084bb9 100644 --- a/alib2data/src/exception/AlibException.cpp +++ b/alib2data/src/exception/AlibException.cpp @@ -35,6 +35,14 @@ AlibException::AlibException ( const std::string & cause ) : AlibException { } { this->whatMessage += this->cause; } +AlibException::AlibException ( const std::string & cause, const std::string& backtrace ) : AlibException { } { + this->backtrace = backtrace; + this->cause = cause; + + this->whatMessage += this->backtrace; + this->whatMessage += this->cause; +} + AlibException::~AlibException ( ) noexcept { } diff --git a/alib2data/src/exception/AlibException.h b/alib2data/src/exception/AlibException.h index bcdb502fd85b1aed7467d8c7c946d81efadf869a..09f53c66c1c6c84bd21a3a4b40f9865577649362 100644 --- a/alib2data/src/exception/AlibException.h +++ b/alib2data/src/exception/AlibException.h @@ -30,6 +30,8 @@ public: explicit AlibException ( const std::string & cause ); + explicit AlibException ( const std::string & cause, const std::string& backtrace ); + virtual ~AlibException ( ) noexcept; virtual alib::ObjectBase* clone() const; diff --git a/alib2data/src/exception/ExceptionFromXMLParser.cpp b/alib2data/src/exception/ExceptionFromXMLParser.cpp index 29298941ae526ac931c6c9e55f209b11d05b52c8..6ee369c7ceefb0ff3dd5da3218299093f81e5f21 100644 --- a/alib2data/src/exception/ExceptionFromXMLParser.cpp +++ b/alib2data/src/exception/ExceptionFromXMLParser.cpp @@ -9,6 +9,8 @@ #include "../sax/ParserException.h" #include <string> +#include "../Api.hpp" + namespace exception { AlibException ExceptionFromXMLParser::parseException(std::list<sax::Token>& input) const { @@ -17,18 +19,27 @@ AlibException ExceptionFromXMLParser::parseException(std::list<sax::Token>& inpu AlibException ExceptionFromXMLParser::parseException(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { if(!features.count(FEATURES::ALIB_EXCEPTION)) throw exception::AlibException(); - popToken(input, sax::Token::TokenType::START_ELEMENT, "exception"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::EXCEPTION_ALIB_EXCEPTION); + popToken(input, sax::Token::TokenType::START_ELEMENT, "cause"); std::string cause = ""; if (input.front().getType() == sax::Token::TokenType::CHARACTER) { cause = input.front().getData(); input.pop_front(); } - popToken(input, sax::Token::TokenType::END_ELEMENT, "exception"); - return AlibException(cause); + popToken(input, sax::Token::TokenType::END_ELEMENT, "cause"); + popToken(input, sax::Token::TokenType::START_ELEMENT, "backtrace"); + std::string backtrace = ""; + if (input.front().getType() == sax::Token::TokenType::CHARACTER) { + backtrace = input.front().getData(); + input.pop_front(); + } + popToken(input, sax::Token::TokenType::END_ELEMENT, "backtrace"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::EXCEPTION_ALIB_EXCEPTION); + return AlibException(cause, backtrace); } -bool ExceptionFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "exception")) { +bool ExceptionFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<AlibException>::first(input)) { return true; } else { return false; diff --git a/alib2data/src/exception/ExceptionFromXMLParser.h b/alib2data/src/exception/ExceptionFromXMLParser.h index ee94c2a235e45ce5c34e5798b522f375a1d924d2..10dacf6c222dcbf4b460fcf52bca96a6ec7e76a8 100644 --- a/alib2data/src/exception/ExceptionFromXMLParser.h +++ b/alib2data/src/exception/ExceptionFromXMLParser.h @@ -31,7 +31,7 @@ class ExceptionFromXMLParser : public sax::FromXMLParserHelper { AlibException parseException(std::list<sax::Token>& input, const std::set<FEATURES>& features) const; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; template<typename T> friend class alib::api; }; diff --git a/alib2data/src/exception/ExceptionToXMLComposer.cpp b/alib2data/src/exception/ExceptionToXMLComposer.cpp index 5ba436e8c25633b6d7de9fc2d40c4e9c02e05d79..f7fa2946521b4ecf8af7aa63947917be8d7d7da8 100644 --- a/alib2data/src/exception/ExceptionToXMLComposer.cpp +++ b/alib2data/src/exception/ExceptionToXMLComposer.cpp @@ -7,14 +7,21 @@ #include "ExceptionToXMLComposer.h" +#include "../Api.hpp" + namespace exception { std::list<sax::Token> ExceptionToXMLComposer::compose(const AlibException& exception) const { std::list<sax::Token> out; - out.push_back(sax::Token("exception", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::EXCEPTION_ALIB_EXCEPTION, sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token("cause", sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(exception.getCause(), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("exception", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token("cause", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token("backtrace", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(exception.getBacktrace(), sax::Token::TokenType::CHARACTER)); + out.push_back(sax::Token("backtrace", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::EXCEPTION_ALIB_EXCEPTION, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/grammar/GrammarFromXMLParser.cpp b/alib2data/src/grammar/GrammarFromXMLParser.cpp index 7823887f6d7623ea38877e19739eb35fa01bc9ba..06441c01ef330dcae0ac17cfae2157167f0491a9 100644 --- a/alib2data/src/grammar/GrammarFromXMLParser.cpp +++ b/alib2data/src/grammar/GrammarFromXMLParser.cpp @@ -19,51 +19,51 @@ Grammar GrammarFromXMLParser::parseGrammar(std::list<sax::Token> &input) const { } Grammar GrammarFromXMLParser::parseGrammar(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "UnrestrictedGrammar")) { + if(alib::api<UnrestrictedGrammar>::first(input)) { if(!features.count(FEATURES::UNRESTRICTED_GRAMMAR)) throw exception::AlibException(); return Grammar(parseUnrestrictedGrammar(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "ContextPreservingUnrestrictedGrammar")) { + } else if(alib::api<ContextPreservingUnrestrictedGrammar>::first(input)) { if(!features.count(FEATURES::CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR)) throw exception::AlibException(); return Grammar(parseContextPreservingUnrestrictedGrammar(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "NonContractingGrammar")) { + } else if(alib::api<NonContractingGrammar>::first(input)) { if(!features.count(FEATURES::NON_CONTRACTING_GRAMMAR)) throw exception::AlibException(); return Grammar(parseNonContractingGrammar(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "CSG")) { + } else if(alib::api<CSG>::first(input)) { if(!features.count(FEATURES::CSG)) throw exception::AlibException(); return Grammar(parseCSG(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "GNF")) { + } else if(alib::api<GNF>::first(input)) { if(!features.count(FEATURES::GNF)) throw exception::AlibException(); return Grammar(parseGNF(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "CNF")) { + } else if(alib::api<CNF>::first(input)) { if(!features.count(FEATURES::CNF)) throw exception::AlibException(); return Grammar(parseCNF(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "EpsilonFreeCFG")) { + } else if(alib::api<EpsilonFreeCFG>::first(input)) { if(!features.count(FEATURES::EPSILON_FREE_CFG)) throw exception::AlibException(); return Grammar(parseEpsilonFreeCFG(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "CFG")) { + } else if(alib::api<CFG>::first(input)) { if(!features.count(FEATURES::CFG)) throw exception::AlibException(); return Grammar(parseCFG(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LG")) { + } else if(alib::api<LG>::first(input)) { if(!features.count(FEATURES::LG)) throw exception::AlibException(); return Grammar(parseLG(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "RightRG")) { + } else if(alib::api<RightRG>::first(input)) { if(!features.count(FEATURES::RIGHT_RG)) throw exception::AlibException(); return Grammar(parseRightRG(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "RightLG")) { + } else if(alib::api<RightLG>::first(input)) { if(!features.count(FEATURES::RIGHT_LG)) throw exception::AlibException(); return Grammar(parseRightLG(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LeftRG")) { + } else if(alib::api<LeftRG>::first(input)) { if(!features.count(FEATURES::LEFT_RG)) throw exception::AlibException(); return Grammar(parseLeftRG(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LeftLG")) { + } else if(alib::api<LeftLG>::first(input)) { if(!features.count(FEATURES::LEFT_LG)) throw exception::AlibException(); return Grammar(parseLeftLG(input)); } else throw sax::ParserException(sax::Token("Grammar / UnrestrictedGrammar", sax::Token::TokenType::START_ELEMENT), input.front()); } -bool GrammarFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "grammar") || isToken(input, sax::Token::TokenType::START_ELEMENT, "UnrestrictedGrammar") || isToken(input, sax::Token::TokenType::START_ELEMENT, "ContextPreservingUnrestrictedGrammar") || isToken(input, sax::Token::TokenType::START_ELEMENT, "NonContractingGrammar") || isToken(input, sax::Token::TokenType::START_ELEMENT, "CSG") || isToken(input, sax::Token::TokenType::START_ELEMENT, "GNF") || isToken(input, sax::Token::TokenType::START_ELEMENT, "CNF") || isToken(input, sax::Token::TokenType::START_ELEMENT, "EpsilonFreeCFG") || isToken(input, sax::Token::TokenType::START_ELEMENT, "CFG") || isToken(input, sax::Token::TokenType::START_ELEMENT, "LG") || isToken(input, sax::Token::TokenType::START_ELEMENT, "RightRG") || isToken(input, sax::Token::TokenType::START_ELEMENT, "RightLG") || isToken(input, sax::Token::TokenType::START_ELEMENT, "LeftLG") || isToken(input, sax::Token::TokenType::START_ELEMENT, "LeftLG")) { +bool GrammarFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<UnrestrictedGrammar>::first(input) || alib::api<ContextPreservingUnrestrictedGrammar>::first(input) || alib::api<NonContractingGrammar>::first(input) || alib::api<CSG>::first(input) || alib::api<GNF>::first(input) || alib::api<CNF>::first(input) || alib::api<EpsilonFreeCFG>::first(input) || alib::api<CFG>::first(input) || alib::api<LG>::first(input) || alib::api<RightRG>::first(input) || alib::api<RightLG>::first(input) || alib::api<LeftLG>::first(input) || alib::api<LeftLG>::first(input)) { return true; } else { return false; @@ -71,7 +71,7 @@ bool GrammarFromXMLParser::first(std::list<sax::Token>& input) const { } UnrestrictedGrammar GrammarFromXMLParser::parseUnrestrictedGrammar(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "UnrestrictedGrammar"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_UNRESTRICTED_GRAMMAR); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -83,12 +83,12 @@ UnrestrictedGrammar GrammarFromXMLParser::parseUnrestrictedGrammar(std::list<sax parseRules(input, grammar); - popToken(input, sax::Token::TokenType::END_ELEMENT, "UnrestrictedGrammar"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_UNRESTRICTED_GRAMMAR); return grammar; } ContextPreservingUnrestrictedGrammar GrammarFromXMLParser::parseContextPreservingUnrestrictedGrammar(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "ContextPreservingUnrestrictedGrammar"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -100,12 +100,12 @@ ContextPreservingUnrestrictedGrammar GrammarFromXMLParser::parseContextPreservin parseRules(input, grammar); - popToken(input, sax::Token::TokenType::END_ELEMENT, "ContextPreservingUnrestrictedGrammar"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR); return grammar; } NonContractingGrammar GrammarFromXMLParser::parseNonContractingGrammar(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "NonContractingGrammar"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_NON_CONTRACTING_GRAMMAR); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -120,12 +120,12 @@ NonContractingGrammar GrammarFromXMLParser::parseNonContractingGrammar(std::list bool generatesEpsilon = parseGeneratesEpsilon(input); grammar.setGeneratesEpsilon(generatesEpsilon); - popToken(input, sax::Token::TokenType::END_ELEMENT, "NonContractingGrammar"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_NON_CONTRACTING_GRAMMAR); return grammar; } CSG GrammarFromXMLParser::parseCSG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "CSG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_CSG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -140,12 +140,12 @@ CSG GrammarFromXMLParser::parseCSG(std::list<sax::Token>& input) const { bool generatesEpsilon = parseGeneratesEpsilon(input); grammar.setGeneratesEpsilon(generatesEpsilon); - popToken(input, sax::Token::TokenType::END_ELEMENT, "CSG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_CSG); return grammar; } GNF GrammarFromXMLParser::parseGNF(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "GNF"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_GNF); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -160,12 +160,12 @@ GNF GrammarFromXMLParser::parseGNF(std::list<sax::Token>& input) const { bool generatesEpsilon = parseGeneratesEpsilon(input); grammar.setGeneratesEpsilon(generatesEpsilon); - popToken(input, sax::Token::TokenType::END_ELEMENT, "GNF"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_GNF); return grammar; } CNF GrammarFromXMLParser::parseCNF(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "CNF"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_CNF); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -180,12 +180,12 @@ CNF GrammarFromXMLParser::parseCNF(std::list<sax::Token>& input) const { bool generatesEpsilon = parseGeneratesEpsilon(input); grammar.setGeneratesEpsilon(generatesEpsilon); - popToken(input, sax::Token::TokenType::END_ELEMENT, "CNF"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_CNF); return grammar; } EpsilonFreeCFG GrammarFromXMLParser::parseEpsilonFreeCFG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "EpsilonFreeCFG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_EPSILON_FREE_CFG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -200,12 +200,12 @@ EpsilonFreeCFG GrammarFromXMLParser::parseEpsilonFreeCFG(std::list<sax::Token>& bool generatesEpsilon = parseGeneratesEpsilon(input); grammar.setGeneratesEpsilon(generatesEpsilon); - popToken(input, sax::Token::TokenType::END_ELEMENT, "EpsilonFreeCFG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_EPSILON_FREE_CFG); return grammar; } CFG GrammarFromXMLParser::parseCFG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "CFG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_CFG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -217,12 +217,12 @@ CFG GrammarFromXMLParser::parseCFG(std::list<sax::Token>& input) const { parseRules(input, grammar); - popToken(input, sax::Token::TokenType::END_ELEMENT, "CFG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_CFG); return grammar; } LG GrammarFromXMLParser::parseLG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "LG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_LG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -234,12 +234,12 @@ LG GrammarFromXMLParser::parseLG(std::list<sax::Token>& input) const { parseRules(input, grammar); - popToken(input, sax::Token::TokenType::END_ELEMENT, "LG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_LG); return grammar; } RightRG GrammarFromXMLParser::parseRightRG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "RightRG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_RIGHT_RG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -254,12 +254,12 @@ RightRG GrammarFromXMLParser::parseRightRG(std::list<sax::Token>& input) const { bool generatesEpsilon = parseGeneratesEpsilon(input); grammar.setGeneratesEpsilon(generatesEpsilon); - popToken(input, sax::Token::TokenType::END_ELEMENT, "RightRG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_RIGHT_RG); return grammar; } RightLG GrammarFromXMLParser::parseRightLG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "RightLG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_RIGHT_LG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -271,12 +271,12 @@ RightLG GrammarFromXMLParser::parseRightLG(std::list<sax::Token>& input) const { parseRules(input, grammar); - popToken(input, sax::Token::TokenType::END_ELEMENT, "RightLG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_RIGHT_LG); return grammar; } LeftRG GrammarFromXMLParser::parseLeftRG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "LeftRG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_LEFT_RG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -291,12 +291,12 @@ LeftRG GrammarFromXMLParser::parseLeftRG(std::list<sax::Token>& input) const { bool generatesEpsilon = parseGeneratesEpsilon(input); grammar.setGeneratesEpsilon(generatesEpsilon); - popToken(input, sax::Token::TokenType::END_ELEMENT, "LeftRG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_LEFT_RG); return grammar; } LeftLG GrammarFromXMLParser::parseLeftLG(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "LeftLG"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::GRAMMAR_LEFT_LG); std::set<alphabet::Symbol> nonterminalAlphabet = parseNonterminalAlphabet(input); std::set<alphabet::Symbol> terminalAlphabet = parseTerminalAlphabet(input); @@ -308,7 +308,7 @@ LeftLG GrammarFromXMLParser::parseLeftLG(std::list<sax::Token>& input) const { parseRules(input, grammar); - popToken(input, sax::Token::TokenType::END_ELEMENT, "LeftLG"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::GRAMMAR_LEFT_LG); return grammar; } diff --git a/alib2data/src/grammar/GrammarFromXMLParser.h b/alib2data/src/grammar/GrammarFromXMLParser.h index d667bc1eb52678814496995b336d2870c6ce31c8..13fb785df0adc3da0c4631170ea1c451aa793bc3 100644 --- a/alib2data/src/grammar/GrammarFromXMLParser.h +++ b/alib2data/src/grammar/GrammarFromXMLParser.h @@ -92,7 +92,7 @@ class GrammarFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace grammar */ diff --git a/alib2data/src/grammar/GrammarToXMLComposer.cpp b/alib2data/src/grammar/GrammarToXMLComposer.cpp index b6eb02409049adc4d5a26ca8cd70bb6cced6c4ce..31c1e6de530c6594287d3c01b4687150bdf1c3cb 100644 --- a/alib2data/src/grammar/GrammarToXMLComposer.cpp +++ b/alib2data/src/grammar/GrammarToXMLComposer.cpp @@ -26,20 +26,20 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const Grammar& grammar) cons std::list<sax::Token> GrammarToXMLComposer::compose(const LeftLG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("LeftLG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_LEFT_LG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); composeInitialSymbol(out, grammar.getInitialSymbol()); composeRules(out, grammar); - out.push_back(sax::Token("LeftLG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_LEFT_LG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const LeftRG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("LeftRG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_LEFT_RG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); @@ -47,26 +47,26 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const LeftRG& grammar) const composeRules(out, grammar); composeGeneratesEpsilon(out, grammar.getGeneratesEpsilon()); - out.push_back(sax::Token("LeftRG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_LEFT_RG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const RightLG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("RightLG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_RIGHT_LG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); composeInitialSymbol(out, grammar.getInitialSymbol()); composeRules(out, grammar); - out.push_back(sax::Token("RightLG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_RIGHT_LG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const RightRG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("RightRG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_RIGHT_RG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); @@ -74,39 +74,39 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const RightRG& grammar) cons composeRules(out, grammar); composeGeneratesEpsilon(out, grammar.getGeneratesEpsilon()); - out.push_back(sax::Token("RightRG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_RIGHT_RG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const LG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("LG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_LG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); composeInitialSymbol(out, grammar.getInitialSymbol()); composeRules(out, grammar); - out.push_back(sax::Token("LG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_LG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const CFG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("CFG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CFG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); composeInitialSymbol(out, grammar.getInitialSymbol()); composeRules(out, grammar); - out.push_back(sax::Token("CFG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CFG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const EpsilonFreeCFG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("EpsilonFreeCFG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_EPSILON_FREE_CFG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); @@ -114,13 +114,13 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const EpsilonFreeCFG& gramma composeRules(out, grammar); composeGeneratesEpsilon(out, grammar.getGeneratesEpsilon()); - out.push_back(sax::Token("EpsilonFreeCFG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_EPSILON_FREE_CFG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const CNF& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("CNF", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CNF, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); @@ -128,13 +128,13 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const CNF& grammar) const { composeRules(out, grammar); composeGeneratesEpsilon(out, grammar.getGeneratesEpsilon()); - out.push_back(sax::Token("CNF", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CNF, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const GNF& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("GNF", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_GNF, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); @@ -142,13 +142,13 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const GNF& grammar) const { composeRules(out, grammar); composeGeneratesEpsilon(out, grammar.getGeneratesEpsilon()); - out.push_back(sax::Token("GNF", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_GNF, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const CSG& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("CSG", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CSG, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); @@ -156,13 +156,13 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const CSG& grammar) const { composeRules(out, grammar); composeGeneratesEpsilon(out, grammar.getGeneratesEpsilon()); - out.push_back(sax::Token("CSG", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CSG, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const NonContractingGrammar& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("NonContractingGrammar", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_NON_CONTRACTING_GRAMMAR, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); @@ -170,33 +170,33 @@ std::list<sax::Token> GrammarToXMLComposer::compose(const NonContractingGrammar& composeRules(out, grammar); composeGeneratesEpsilon(out, grammar.getGeneratesEpsilon()); - out.push_back(sax::Token("NonContractingGrammar", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_NON_CONTRACTING_GRAMMAR, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const ContextPreservingUnrestrictedGrammar& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("ContextPreservingUnrestrictedGrammar", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); composeInitialSymbol(out, grammar.getInitialSymbol()); composeRules(out, grammar); - out.push_back(sax::Token("ContextPreservingUnrestrictedGrammar", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_CONTEXT_PRESERVING_UNRESTRICTED_GRAMMAR, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> GrammarToXMLComposer::compose(const UnrestrictedGrammar& grammar) const { std::list<sax::Token> out; - out.push_back(sax::Token("UnrestrictedGrammar", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_UNRESTRICTED_GRAMMAR, sax::Token::TokenType::START_ELEMENT)); composeNonterminalAlphabet(out, grammar.getNonterminalAlphabet()); composeTerminalAlphabet(out, grammar.getTerminalAlphabet()); composeInitialSymbol(out, grammar.getInitialSymbol()); composeRules(out, grammar); - out.push_back(sax::Token("UnrestrictedGrammar", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::GRAMMAR_UNRESTRICTED_GRAMMAR, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/label/LabelFromXMLParser.cpp b/alib2data/src/label/LabelFromXMLParser.cpp index adcd1a45f5d268f5ec27d5b1369441189e1d1a52..de0fd8dd76cc2c78702709866c512ea30b4841b1 100644 --- a/alib2data/src/label/LabelFromXMLParser.cpp +++ b/alib2data/src/label/LabelFromXMLParser.cpp @@ -17,19 +17,19 @@ Label LabelFromXMLParser::parseLabel(std::list<sax::Token>& input) const { } Label LabelFromXMLParser::parseLabel(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "PrimitiveLabel")) { + if(alib::api<PrimitiveLabel>::first(input)) { if(!features.count(FEATURES::PRIMITIVE)) throw exception::AlibException(); return Label(parsePrimitiveLabel(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "HexavigesimalLabel")) { + } else if(alib::api<HexavigesimalLabel>::first(input)) { if(!features.count(FEATURES::HEXAVIGESIMAL)) throw exception::AlibException(); return Label(parseHexavigesimalLabel(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "ObjectLabel")) { + } else if(alib::api<ObjectLabel>::first(input)) { if(!features.count(FEATURES::OBJECT)) throw exception::AlibException(); return Label(parseObjectLabel(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LabelSetLabel")) { + } else if(alib::api<LabelSetLabel>::first(input)) { if(!features.count(FEATURES::LABEL_SET)) throw exception::AlibException(); return Label(parseLabelSetLabel(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LabelPairLabel")) { + } else if(alib::api<LabelPairLabel>::first(input)) { if(!features.count(FEATURES::LABEL_PAIR)) throw exception::AlibException(); return Label(parseLabelPairLabel(input)); } else { @@ -37,8 +37,8 @@ Label LabelFromXMLParser::parseLabel(std::list<sax::Token>& input, const std::se } } -bool LabelFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "PrimitiveLabel") || isToken(input, sax::Token::TokenType::START_ELEMENT, "ObjectLabel") || isToken(input, sax::Token::TokenType::START_ELEMENT, "LabelSetLabel") || isToken(input, sax::Token::TokenType::START_ELEMENT, "LabelPairLabel")) { +bool LabelFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<PrimitiveLabel>::first(input) || alib::api<ObjectLabel>::first(input) || alib::api<LabelSetLabel>::first(input) || alib::api<LabelPairLabel>::first(input)) { return true; } else { return false; @@ -46,45 +46,45 @@ bool LabelFromXMLParser::first(std::list<sax::Token>& input) const { } PrimitiveLabel LabelFromXMLParser::parsePrimitiveLabel(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "PrimitiveLabel"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::LABEL_PRIMITIVE_LABEL); PrimitiveLabel data(alib::api<primitive::Primitive>::parse(input)); - popToken(input, sax::Token::TokenType::END_ELEMENT, "PrimitiveLabel"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::LABEL_PRIMITIVE_LABEL); return data; } HexavigesimalLabel LabelFromXMLParser::parseHexavigesimalLabel(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "HexavigesimalLabel"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::LABEL_HEXAVIGESIMAL_LABEL); HexavigesimalLabel data(std::stoi(popTokenData(input, sax::Token::TokenType::CHARACTER))); - popToken(input, sax::Token::TokenType::END_ELEMENT, "HexavigesimalLabel"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::LABEL_HEXAVIGESIMAL_LABEL); return data; } ObjectLabel LabelFromXMLParser::parseObjectLabel(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "ObjectLabel"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::LABEL_OBJECT_LABEL); ObjectLabel data(alib::api<alib::Object>::parse(input)); - popToken(input, sax::Token::TokenType::END_ELEMENT, "ObjectLabel"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::LABEL_OBJECT_LABEL); return data; } LabelSetLabel LabelFromXMLParser::parseLabelSetLabel(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "LabelSetLabel"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::LABEL_LABEL_SET_LABEL); std::set<Label> labels; while(isTokenType(input, sax::Token::TokenType::START_ELEMENT)) { labels.insert(parseLabel(input)); } LabelSetLabel data(labels); - popToken(input, sax::Token::TokenType::END_ELEMENT, "LabelSetLabel"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::LABEL_LABEL_SET_LABEL); return data; } LabelPairLabel LabelFromXMLParser::parseLabelPairLabel(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "LabelPairLabel"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::LABEL_LABEL_PAIR_LABEL); Label firstLabel = parseLabel(input); Label secondLabel = parseLabel(input); LabelPairLabel data(std::make_pair(firstLabel, secondLabel)); - popToken(input, sax::Token::TokenType::END_ELEMENT, "LabelPairLabel"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::LABEL_LABEL_PAIR_LABEL); return data; } diff --git a/alib2data/src/label/LabelFromXMLParser.h b/alib2data/src/label/LabelFromXMLParser.h index 0810178486ceb1126749c45e1111c6454fb47cc2..81cf283787178caccd98e6b261c6c80968c1801d 100644 --- a/alib2data/src/label/LabelFromXMLParser.h +++ b/alib2data/src/label/LabelFromXMLParser.h @@ -44,7 +44,7 @@ class LabelFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace label */ diff --git a/alib2data/src/label/LabelToXMLComposer.cpp b/alib2data/src/label/LabelToXMLComposer.cpp index de7875afd3885f6dc89bc5b2110a7b2db912f98d..5112366373e8b3c3c6cce54ce77cc8fad2cac537 100644 --- a/alib2data/src/label/LabelToXMLComposer.cpp +++ b/alib2data/src/label/LabelToXMLComposer.cpp @@ -26,44 +26,44 @@ std::list<sax::Token> LabelToXMLComposer::compose(const LabelBase& label) const std::list<sax::Token> LabelToXMLComposer::compose(const PrimitiveLabel& label) const { std::list<sax::Token> out; - out.push_back(sax::Token("PrimitiveLabel", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_PRIMITIVE_LABEL, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<primitive::Primitive>::compose(label.getData())); - out.push_back(sax::Token("PrimitiveLabel", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_PRIMITIVE_LABEL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> LabelToXMLComposer::compose(const HexavigesimalLabel& label) const { std::list<sax::Token> out; - out.push_back(sax::Token("HexavigesimalLabel", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_HEXAVIGESIMAL_LABEL, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(std::itos(label.getData()), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("HexavigesimalLabel", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_HEXAVIGESIMAL_LABEL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> LabelToXMLComposer::compose(const ObjectLabel& label) const { std::list<sax::Token> out; - out.push_back(sax::Token("ObjectLabel", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_OBJECT_LABEL, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<alib::Object>::compose(label.getData())); - out.push_back(sax::Token("ObjectLabel", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_OBJECT_LABEL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> LabelToXMLComposer::compose(const LabelSetLabel& label) const { std::list<sax::Token> out; - out.push_back(sax::Token("LabelSetLabel", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_LABEL_SET_LABEL, sax::Token::TokenType::START_ELEMENT)); for(const Label& innerLabel : label.getData()) { out.splice(out.end(), alib::api<label::Label>::compose(innerLabel)); } - out.push_back(sax::Token("LabelSetLabel", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_LABEL_SET_LABEL, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> LabelToXMLComposer::compose(const LabelPairLabel& label) const { std::list<sax::Token> out; - out.push_back(sax::Token("LabelPairLabel", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_LABEL_PAIR_LABEL, sax::Token::TokenType::START_ELEMENT)); out.splice(out.end(), alib::api<label::Label>::compose(label.getData().first)); out.splice(out.end(), alib::api<label::Label>::compose(label.getData().second)); - out.push_back(sax::Token("LabelPairLabel", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::LABEL_LABEL_PAIR_LABEL, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/object/ObjectFromXMLParser.cpp b/alib2data/src/object/ObjectFromXMLParser.cpp index 5d4fc2296fba81f0560c35b5bb15d20d73091113..cde302e07984438c9f121d8cd4d6fbfe35f9d063 100644 --- a/alib2data/src/object/ObjectFromXMLParser.cpp +++ b/alib2data/src/object/ObjectFromXMLParser.cpp @@ -51,7 +51,7 @@ Object ObjectFromXMLParser::parseObject(std::list<sax::Token>& input) const { primitive::Primitive primitive = alib::api<primitive::Primitive>::parse(input); Object res(std::move(primitive.getData())); return res; - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "Void")) { + } else if(alib::api<Void>::first(input)) { Object res(std::move(parseVoid(input))); return res; } else { @@ -60,14 +60,14 @@ Object ObjectFromXMLParser::parseObject(std::list<sax::Token>& input) const { } Void ObjectFromXMLParser::parseVoid(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Void"); - popToken(input, sax::Token::TokenType::END_ELEMENT, "Void"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::ALIB_VOID); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::ALIB_VOID); return Void {}; } -bool ObjectFromXMLParser::first(std::list<sax::Token>& input) { - return alib::FromXMLParsers::symbolParser.first(input) || alib::FromXMLParsers::exceptionParser.first(input) || alib::FromXMLParsers::labelParser.first(input) || alib::FromXMLParsers::regexpParser.first(input) || alib::FromXMLParsers::stringParser.first(input) || alib::FromXMLParsers::automatonParser.first(input) || alib::FromXMLParsers::grammarParser.first(input) || alib::FromXMLParsers::containerParser.first(input) || isToken(input, sax::Token::TokenType::START_ELEMENT, "Void"); +bool ObjectFromXMLParser::first(const std::list<sax::Token>& input) const { + return alib::FromXMLParsers::symbolParser.first(input) || alib::FromXMLParsers::exceptionParser.first(input) || alib::FromXMLParsers::labelParser.first(input) || alib::FromXMLParsers::regexpParser.first(input) || alib::FromXMLParsers::stringParser.first(input) || alib::FromXMLParsers::automatonParser.first(input) || alib::FromXMLParsers::grammarParser.first(input) || alib::FromXMLParsers::containerParser.first(input) || alib::api<Void>::first(input); } } /* namespace alib */ diff --git a/alib2data/src/object/ObjectFromXMLParser.h b/alib2data/src/object/ObjectFromXMLParser.h index f2b0637bcea6f6ccee02e03023198f97cc2d22d1..85b5ac4626d0e84aaf51c6b3526dc83941f0b1ac 100644 --- a/alib2data/src/object/ObjectFromXMLParser.h +++ b/alib2data/src/object/ObjectFromXMLParser.h @@ -32,7 +32,7 @@ class ObjectFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input); + bool first(const std::list<sax::Token>& input) const; }; } /* namespace alib */ diff --git a/alib2data/src/object/ObjectToXMLComposer.cpp b/alib2data/src/object/ObjectToXMLComposer.cpp index 0fc9252f2d3971e42aa7b35ac3c2fff38ddbeccb..77a5915c98e7a81bcd65fd13a065c9732574ea37 100644 --- a/alib2data/src/object/ObjectToXMLComposer.cpp +++ b/alib2data/src/object/ObjectToXMLComposer.cpp @@ -19,8 +19,8 @@ std::list<sax::Token> ObjectToXMLComposer::compose(const Object& object) const { std::list<sax::Token> ObjectToXMLComposer::compose(const Void&) const { std::list<sax::Token> out; - out.push_back(sax::Token("Void", sax::Token::TokenType::START_ELEMENT)); - out.push_back(sax::Token("Void", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALIB_VOID, sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::ALIB_VOID, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/primitive/PrimitiveFromXMLParser.cpp b/alib2data/src/primitive/PrimitiveFromXMLParser.cpp index 329fa9f96f37c298e3a71557d9b13c64a7e068ce..83dca2a06bb0ef35581408e060564bfa424cb723 100644 --- a/alib2data/src/primitive/PrimitiveFromXMLParser.cpp +++ b/alib2data/src/primitive/PrimitiveFromXMLParser.cpp @@ -10,6 +10,8 @@ #include <algorithm> #include "../std/stou.h" +#include "../Api.hpp" + namespace primitive { Primitive PrimitiveFromXMLParser::parsePrimitive(std::list<sax::Token>& input) const { @@ -17,13 +19,13 @@ Primitive PrimitiveFromXMLParser::parsePrimitive(std::list<sax::Token>& input) c } Primitive PrimitiveFromXMLParser::parsePrimitive(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "Integer")) { + if(alib::api<Integer>::first(input)) { if(!features.count(FEATURES::INTEGER)) throw exception::AlibException(); return Primitive(parseInteger(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "String")) { + } else if(alib::api<String>::first(input)) { if(!features.count(FEATURES::STRING)) throw exception::AlibException(); return Primitive(parseString(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "Character")) { + } else if(alib::api<Character>::first(input)) { if(!features.count(FEATURES::CHAR)) throw exception::AlibException(); return Primitive(parseCharacter(input)); } else { @@ -31,8 +33,8 @@ Primitive PrimitiveFromXMLParser::parsePrimitive(std::list<sax::Token>& input, c } } -bool PrimitiveFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "Integer") || isToken(input, sax::Token::TokenType::START_ELEMENT, "String") || isToken(input, sax::Token::TokenType::START_ELEMENT, "Character")) { +bool PrimitiveFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<Integer>::first(input) || alib::api<String>::first(input) || alib::api<Character>::first(input)) { return true; } else { return false; @@ -40,56 +42,56 @@ bool PrimitiveFromXMLParser::first(std::list<sax::Token>& input) const { } Integer PrimitiveFromXMLParser::parseInteger(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Integer"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_INTEGER); Integer data(std::stoi(popTokenData(input, sax::Token::TokenType::CHARACTER))); - popToken(input, sax::Token::TokenType::END_ELEMENT, "Integer"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_INTEGER); return data; } Character PrimitiveFromXMLParser::parseCharacter(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Character"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_CHARACTER); Character data(popTokenData(input, sax::Token::TokenType::CHARACTER)[0]); - popToken(input, sax::Token::TokenType::END_ELEMENT, "Character"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_CHARACTER); return data; } String PrimitiveFromXMLParser::parseString(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "String"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_STRING); String data(popTokenData(input, sax::Token::TokenType::CHARACTER)); - popToken(input, sax::Token::TokenType::END_ELEMENT, "String"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_STRING); return data; } int PrimitiveFromXMLParser::parseIntegerRaw(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Integer"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_INTEGER); int data = std::stoi(popTokenData(input, sax::Token::TokenType::CHARACTER)); - popToken(input, sax::Token::TokenType::END_ELEMENT, "Integer"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_INTEGER); return data; } char PrimitiveFromXMLParser::parseCharacterRaw(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Character"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_CHARACTER); char data = popTokenData(input, sax::Token::TokenType::CHARACTER)[0]; - popToken(input, sax::Token::TokenType::END_ELEMENT, "Character"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_CHARACTER); return data; } std::string PrimitiveFromXMLParser::parseStringRaw(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "String"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_STRING); std::string data = popTokenData(input, sax::Token::TokenType::CHARACTER); - popToken(input, sax::Token::TokenType::END_ELEMENT, "String"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_STRING); return data; } unsigned PrimitiveFromXMLParser::parseUnsignedRaw(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Unsigned"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_UNSIGNED); unsigned data = std::stou(popTokenData(input, sax::Token::TokenType::CHARACTER)); - popToken(input, sax::Token::TokenType::END_ELEMENT, "Unsigned"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_UNSIGNED); return data; } bool PrimitiveFromXMLParser::parseBoolRaw(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Bool"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::PRIMITIVE_BOOL); std::string tmp = popTokenData(input, sax::Token::TokenType::CHARACTER); bool data; if(tmp == "true") @@ -98,7 +100,7 @@ bool PrimitiveFromXMLParser::parseBoolRaw(std::list<sax::Token>& input) const { data = false; else throw exception::AlibException("Invalid boolean value"); - popToken(input, sax::Token::TokenType::END_ELEMENT, "Bool"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::PRIMITIVE_BOOL); return data; } diff --git a/alib2data/src/primitive/PrimitiveFromXMLParser.h b/alib2data/src/primitive/PrimitiveFromXMLParser.h index 7c48fa8e1dec28a01dd003af1cdd8554c1020db9..b0538c5390ad687ca33fe1b4d3714f31dd5b6b72 100644 --- a/alib2data/src/primitive/PrimitiveFromXMLParser.h +++ b/alib2data/src/primitive/PrimitiveFromXMLParser.h @@ -45,7 +45,7 @@ class PrimitiveFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace primitive */ diff --git a/alib2data/src/primitive/PrimitiveToXMLComposer.cpp b/alib2data/src/primitive/PrimitiveToXMLComposer.cpp index 21710da13234f92951af13e6f358fb28b295ae4f..f38ad7759dd21bcbfbdd937ed7df9e093a545c75 100644 --- a/alib2data/src/primitive/PrimitiveToXMLComposer.cpp +++ b/alib2data/src/primitive/PrimitiveToXMLComposer.cpp @@ -30,68 +30,68 @@ std::list<sax::Token> PrimitiveToXMLComposer::compose(const PrimitiveBase& primi std::list<sax::Token> PrimitiveToXMLComposer::compose(const Integer& primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("Integer", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_INTEGER, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(std::itos(primitive.getData()), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("Integer", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_INTEGER, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> PrimitiveToXMLComposer::compose(const Character& primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("Character", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_CHARACTER, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(std::string(1, primitive.getData()), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("Character", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_CHARACTER, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> PrimitiveToXMLComposer::compose(const String& primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("String", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_STRING, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(primitive.getData(), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("String", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_STRING, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> PrimitiveToXMLComposer::compose(int primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("Integer", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_INTEGER, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(std::itos(primitive), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("Integer", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_INTEGER, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> PrimitiveToXMLComposer::compose(char primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("Character", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_CHARACTER, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(std::string(1, primitive), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("Character", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_CHARACTER, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> PrimitiveToXMLComposer::compose(const std::string& primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("String", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_STRING, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(primitive, sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("String", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_STRING, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> PrimitiveToXMLComposer::compose(unsigned primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("Unsigned", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_UNSIGNED, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token(std::utos(primitive), sax::Token::TokenType::CHARACTER)); - out.push_back(sax::Token("Unsigned", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_UNSIGNED, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> PrimitiveToXMLComposer::compose(bool primitive) const { std::list<sax::Token> out; - out.push_back(sax::Token("Bool", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_BOOL, sax::Token::TokenType::START_ELEMENT)); if(primitive) out.push_back(sax::Token("true", sax::Token::TokenType::END_ELEMENT)); else out.push_back(sax::Token("false", sax::Token::TokenType::END_ELEMENT)); - out.push_back(sax::Token("Bool", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::PRIMITIVE_BOOL, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/regexp/RegExpFromXMLParser.cpp b/alib2data/src/regexp/RegExpFromXMLParser.cpp index b255a26f85574cc7c49a586a24e2e5ba60ced310..47a410d354fb38b0697fa9e7a7f1d17dcc6b2ac6 100644 --- a/alib2data/src/regexp/RegExpFromXMLParser.cpp +++ b/alib2data/src/regexp/RegExpFromXMLParser.cpp @@ -17,18 +17,18 @@ RegExp RegExpFromXMLParser::parseRegExp(std::list<sax::Token>& input) const { } RegExp RegExpFromXMLParser::parseRegExp(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "unboundedRegexp")) { + if(alib::api<UnboundedRegExp>::first(input)) { if(!features.count(FEATURES::UNBOUNDED)) throw exception::AlibException(); return RegExp(parseUnboundedRegExp(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "formalRegexp")) { - if(!features.count(FEATURES::UNBOUNDED)) throw exception::AlibException(); + } else if(alib::api<FormalRegExp>::first(input)) { + if(!features.count(FEATURES::FORMAL)) throw exception::AlibException(); return RegExp(parseFormalRegExp(input)); } throw exception::AlibException(); } -bool RegExpFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "unboundedRegexp") || isToken(input, sax::Token::TokenType::START_ELEMENT, "formalRegexp")) { +bool RegExpFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<UnboundedRegExp>::first(input) || alib::api<FormalRegExp>::first(input)) { return true; } else { return false; @@ -36,7 +36,7 @@ bool RegExpFromXMLParser::first(std::list<sax::Token>& input) const { } UnboundedRegExp RegExpFromXMLParser::parseUnboundedRegExp(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "unboundedRegexp"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::REGEXP_UNBOUNDED_REGEXP); UnboundedRegExp regexp; parseAlphabet(input, regexp); @@ -45,12 +45,12 @@ UnboundedRegExp RegExpFromXMLParser::parseUnboundedRegExp(std::list<sax::Token>& regexp.setRegExp(std::move(*element)); delete element; - popToken(input, sax::Token::TokenType::END_ELEMENT, "unboundedRegexp"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::REGEXP_UNBOUNDED_REGEXP); return regexp; } FormalRegExp RegExpFromXMLParser::parseFormalRegExp(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "formalRegexp"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::REGEXP_FORMAL_REGEXP); FormalRegExp regexp; parseAlphabet(input, regexp); @@ -59,7 +59,7 @@ FormalRegExp RegExpFromXMLParser::parseFormalRegExp(std::list<sax::Token>& input regexp.setRegExp(std::move(*element)); delete element; - popToken(input, sax::Token::TokenType::END_ELEMENT, "formalRegexp"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::REGEXP_FORMAL_REGEXP); return regexp; } diff --git a/alib2data/src/regexp/RegExpFromXMLParser.h b/alib2data/src/regexp/RegExpFromXMLParser.h index 9467dccfcfa3d41499c761a7141d12883cf5ae49..bc853497e98dc2054f07ff5b41d9e591e4a5fa72 100644 --- a/alib2data/src/regexp/RegExpFromXMLParser.h +++ b/alib2data/src/regexp/RegExpFromXMLParser.h @@ -56,7 +56,7 @@ class RegExpFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace regexp */ diff --git a/alib2data/src/regexp/RegExpToXMLComposer.cpp b/alib2data/src/regexp/RegExpToXMLComposer.cpp index 10a03c0eb1e20a801fe8d0bf0315b34e36967006..682e34053fc18f0c841aade509c9b76db948aa80 100644 --- a/alib2data/src/regexp/RegExpToXMLComposer.cpp +++ b/alib2data/src/regexp/RegExpToXMLComposer.cpp @@ -141,7 +141,7 @@ std::list<sax::Token> RegExpToXMLComposer::compose(const RegExpBase& regexp) con std::list<sax::Token> RegExpToXMLComposer::compose(const UnboundedRegExp& regexp) const { std::list<sax::Token> out; - out.push_back(sax::Token("unboundedRegexp", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::REGEXP_UNBOUNDED_REGEXP, sax::Token::TokenType::START_ELEMENT)); { out.push_back(sax::Token("alphabet", sax::Token::TokenType::START_ELEMENT)); for (const auto& symbol: regexp.getAlphabet()) { @@ -150,13 +150,13 @@ std::list<sax::Token> RegExpToXMLComposer::compose(const UnboundedRegExp& regexp out.push_back(sax::Token("alphabet", sax::Token::TokenType::END_ELEMENT)); } regexp.getRegExp().Accept((void*) &out, *this); - out.push_back(sax::Token("unboundedRegexp", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::REGEXP_UNBOUNDED_REGEXP, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> RegExpToXMLComposer::compose(const FormalRegExp& regexp) const { std::list<sax::Token> out; - out.push_back(sax::Token("formalRegexp", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::REGEXP_FORMAL_REGEXP, sax::Token::TokenType::START_ELEMENT)); { out.push_back(sax::Token("alphabet", sax::Token::TokenType::START_ELEMENT)); for (const auto& symbol: regexp.getAlphabet()) { @@ -165,7 +165,7 @@ std::list<sax::Token> RegExpToXMLComposer::compose(const FormalRegExp& regexp) c out.push_back(sax::Token("alphabet", sax::Token::TokenType::END_ELEMENT)); } regexp.getRegExp().Accept((void*) &out, *this); - out.push_back(sax::Token("formalRegexp", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::REGEXP_FORMAL_REGEXP, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/alib2data/src/sax/FromXMLParserHelper.cpp b/alib2data/src/sax/FromXMLParserHelper.cpp index 9f0530826b71270e5733360f279497bd0cc98fc3..1bd60a367543e0a21bf1bc42b227595274d0aeb6 100644 --- a/alib2data/src/sax/FromXMLParserHelper.cpp +++ b/alib2data/src/sax/FromXMLParserHelper.cpp @@ -10,15 +10,15 @@ namespace sax { -bool FromXMLParserHelper::isToken(std::list<Token>& input, Token::TokenType type, std::string data) const { +bool FromXMLParserHelper::isToken(const std::list<Token>& input, Token::TokenType type, std::string data) { return input.front().getType() == type && input.front().getData() == data; } -bool FromXMLParserHelper::isTokenType(std::list<Token>& input, Token::TokenType type) const { +bool FromXMLParserHelper::isTokenType(const std::list<Token>& input, Token::TokenType type) { return input.front().getType() == type; } -void FromXMLParserHelper::popToken(std::list<Token>& input, Token::TokenType type, std::string data) const { +void FromXMLParserHelper::popToken(std::list<Token>& input, Token::TokenType type, std::string data) { if (isToken(input, type, data)) { input.pop_front(); } else { @@ -26,7 +26,7 @@ void FromXMLParserHelper::popToken(std::list<Token>& input, Token::TokenType typ } } -std::string FromXMLParserHelper::popTokenData(std::list<Token>& input, Token::TokenType type) const { +std::string FromXMLParserHelper::popTokenData(std::list<Token>& input, Token::TokenType type) { if(isTokenType(input, type)) { std::string result = input.front().getData(); input.pop_front(); diff --git a/alib2data/src/sax/FromXMLParserHelper.h b/alib2data/src/sax/FromXMLParserHelper.h index c31def439bac3819a983b0e891366160846aae38..ad85e3d317496af9f4e2f8f82526d32ec229fa8b 100644 --- a/alib2data/src/sax/FromXMLParserHelper.h +++ b/alib2data/src/sax/FromXMLParserHelper.h @@ -17,11 +17,11 @@ namespace sax { * Parser used to get UnknownAutomaton from XML parsed into list of Tokens. */ class FromXMLParserHelper { -protected: - bool isToken(std::list<Token> &input, Token::TokenType type, std::string data) const; - bool isTokenType(std::list<Token>& input, Token::TokenType type) const; - void popToken(std::list<Token> &input, Token::TokenType type, std::string data) const; - std::string popTokenData(std::list<Token>& input, Token::TokenType type) const; +public: + static bool isToken(const std::list<Token>& input, Token::TokenType type, std::string data); + static bool isTokenType(const std::list<Token>& input, Token::TokenType type); + static void popToken(std::list<Token>& input, Token::TokenType type, std::string data); + static std::string popTokenData(std::list<Token>& input, Token::TokenType type); }; diff --git a/alib2data/src/string/StringFromXMLParser.cpp b/alib2data/src/string/StringFromXMLParser.cpp index 47faea16f1173834963dca11a1d5c56caec8c982..7ac495e7abea959f848be690d76461e8b9b2c7e5 100644 --- a/alib2data/src/string/StringFromXMLParser.cpp +++ b/alib2data/src/string/StringFromXMLParser.cpp @@ -17,13 +17,13 @@ String StringFromXMLParser::parseString(std::list<sax::Token>& input) const { } String StringFromXMLParser::parseString(std::list<sax::Token>& input, const std::set<FEATURES>& features) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "Epsilon")) { + if(alib::api<Epsilon>::first(input)) { if(!features.count(FEATURES::EPSILON)) throw exception::AlibException(); return String(parseEpsilon(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "LinearString")) { + } else if(alib::api<LinearString>::first(input)) { if(!features.count(FEATURES::LINEAR)) throw exception::AlibException(); return String(parseLinearString(input)); - } else if(isToken(input, sax::Token::TokenType::START_ELEMENT, "CyclicString")) { + } else if(alib::api<CyclicString>::first(input)) { if(!features.count(FEATURES::CYCLIC)) throw exception::AlibException(); return String(parseCyclicString(input)); } else { @@ -31,8 +31,8 @@ String StringFromXMLParser::parseString(std::list<sax::Token>& input, const std: } } -bool StringFromXMLParser::first(std::list<sax::Token>& input) const { - if(isToken(input, sax::Token::TokenType::START_ELEMENT, "Epsilon") || isToken(input, sax::Token::TokenType::START_ELEMENT, "LinearString") || isToken(input, sax::Token::TokenType::START_ELEMENT, "CyclicString")) { +bool StringFromXMLParser::first(const std::list<sax::Token>& input) const { + if(alib::api<Epsilon>::first(input) || alib::api<LinearString>::first(input) || alib::api<CyclicString>::first(input)) { return true; } else { return false; @@ -40,7 +40,7 @@ bool StringFromXMLParser::first(std::list<sax::Token>& input) const { } LinearString StringFromXMLParser::parseLinearString(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "LinearString"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::STRING_LINEAR_STRING); LinearString string; std::set<alphabet::Symbol> alphabet = parseAlphabet(input); @@ -49,12 +49,12 @@ LinearString StringFromXMLParser::parseLinearString(std::list<sax::Token>& input std::vector<alphabet::Symbol> data = parseContentData(input); string.setContent(data); - popToken(input, sax::Token::TokenType::END_ELEMENT, "LinearString"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::STRING_LINEAR_STRING); return string; } CyclicString StringFromXMLParser::parseCyclicString(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "CyclicString"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::STRING_CYCLIC_STRING); CyclicString string; std::set<alphabet::Symbol> alphabet = parseAlphabet(input); @@ -63,18 +63,18 @@ CyclicString StringFromXMLParser::parseCyclicString(std::list<sax::Token>& input std::vector<alphabet::Symbol> data = parseContentData(input); string.setContent(data); - popToken(input, sax::Token::TokenType::END_ELEMENT, "CyclicString"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::STRING_CYCLIC_STRING); return string; } Epsilon StringFromXMLParser::parseEpsilon(std::list<sax::Token>& input) const { - popToken(input, sax::Token::TokenType::START_ELEMENT, "Epsilon"); + popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::STRING_EPSILON); Epsilon epsilon; std::set<alphabet::Symbol> alphabet = parseAlphabet(input); epsilon.setAlphabet(alphabet); - popToken(input, sax::Token::TokenType::END_ELEMENT, "Epsilon"); + popToken(input, sax::Token::TokenType::END_ELEMENT, alib::Names::STRING_EPSILON); return epsilon; } diff --git a/alib2data/src/string/StringFromXMLParser.h b/alib2data/src/string/StringFromXMLParser.h index 3f8fe1ce5bfa2ab99bfb78316024648cd87e0838..ea0663380e67ab18f3b205effe1e758e70c2d292 100644 --- a/alib2data/src/string/StringFromXMLParser.h +++ b/alib2data/src/string/StringFromXMLParser.h @@ -44,7 +44,7 @@ class StringFromXMLParser : public sax::FromXMLParserHelper { template<typename T> friend class alib::api; public: - bool first(std::list<sax::Token>& input) const; + bool first(const std::list<sax::Token>& input) const; }; } /* namespace string */ diff --git a/alib2data/src/string/StringToXMLComposer.cpp b/alib2data/src/string/StringToXMLComposer.cpp index f45545a17d0ef0f402bdb77ac801db6e4f6da6ba..240a4bccb54fd22b64a93a0a26eabe14974c64c0 100644 --- a/alib2data/src/string/StringToXMLComposer.cpp +++ b/alib2data/src/string/StringToXMLComposer.cpp @@ -28,7 +28,7 @@ std::list<sax::Token> StringToXMLComposer::compose(const StringBase& string) con std::list<sax::Token> StringToXMLComposer::compose(const LinearString& string) const { std::list<sax::Token> out; - out.push_back(sax::Token("LinearString", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::STRING_LINEAR_STRING, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token("alphabet", sax::Token::TokenType::START_ELEMENT)); for (const auto& symbol: string.getAlphabet()) { out.splice(out.end(), alib::api<alphabet::Symbol>::compose(symbol)); @@ -38,13 +38,13 @@ std::list<sax::Token> StringToXMLComposer::compose(const LinearString& string) c for(const auto& symbol : string.getContent()) { out.splice(out.end(), alib::api<alphabet::Symbol>::compose(symbol)); } - out.push_back(sax::Token("LinearString", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::STRING_LINEAR_STRING, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> StringToXMLComposer::compose(const CyclicString& string) const { std::list<sax::Token> out; - out.push_back(sax::Token("CyclicString", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::STRING_CYCLIC_STRING, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token("alphabet", sax::Token::TokenType::START_ELEMENT)); for (const auto& symbol: string.getAlphabet()) { out.splice(out.end(), alib::api<alphabet::Symbol>::compose(symbol)); @@ -54,19 +54,19 @@ std::list<sax::Token> StringToXMLComposer::compose(const CyclicString& string) c for(const auto& symbol : string.getContent()) { out.splice(out.end(), alib::api<alphabet::Symbol>::compose(symbol)); } - out.push_back(sax::Token("CyclicString", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::STRING_CYCLIC_STRING, sax::Token::TokenType::END_ELEMENT)); return out; } std::list<sax::Token> StringToXMLComposer::compose(const Epsilon& string) const { std::list<sax::Token> out; - out.push_back(sax::Token("Epsilon", sax::Token::TokenType::START_ELEMENT)); + out.push_back(sax::Token(alib::Names::STRING_EPSILON, sax::Token::TokenType::START_ELEMENT)); out.push_back(sax::Token("alphabet", sax::Token::TokenType::START_ELEMENT)); for (const auto& symbol: string.getAlphabet()) { out.splice(out.end(), alib::api<alphabet::Symbol>::compose(symbol)); } out.push_back(sax::Token("alphabet", sax::Token::TokenType::END_ELEMENT)); - out.push_back(sax::Token("Epsilon", sax::Token::TokenType::END_ELEMENT)); + out.push_back(sax::Token(alib::Names::STRING_EPSILON, sax::Token::TokenType::END_ELEMENT)); return out; } diff --git a/examples2/regexp/Melichar2-94.i0.xml b/examples2/regexp/Melichar2-94.i0.xml index f2c4ec198f49bc67312efffff98420fab784c4f0..46501d1c8ce9ca93469818983a232735ab5cc540 100644 --- a/examples2/regexp/Melichar2-94.i0.xml +++ b/examples2/regexp/Melichar2-94.i0.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -13,4 +13,4 @@ </iteration> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/Melichar2-94.i1.xml b/examples2/regexp/Melichar2-94.i1.xml index 1fa54da20066adc9c6e3ce49cbfe6e7d01e097df..6c4b21a4c1bba56deb0fb145e79b229c1256c49b 100644 --- a/examples2/regexp/Melichar2-94.i1.xml +++ b/examples2/regexp/Melichar2-94.i1.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -13,4 +13,4 @@ </iteration> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/Melichar2-94.xml b/examples2/regexp/Melichar2-94.xml index 731f2a4709d433f4bd3b4cbf5ac37df3de724364..890443b6a4310b1ec2996162b9906b18d98b1d28 100644 --- a/examples2/regexp/Melichar2-94.xml +++ b/examples2/regexp/Melichar2-94.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -12,4 +12,4 @@ </iteration> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/formal-aag.oppa.4.13.xml b/examples2/regexp/formal-aag.oppa.4.13.xml index 9eddb3bf90511de46aebb096e4d28bbf25c54b22..3db70ab8f15e123a26b86056c7abd7b06f115635 100644 --- a/examples2/regexp/formal-aag.oppa.4.13.xml +++ b/examples2/regexp/formal-aag.oppa.4.13.xml @@ -1,4 +1,4 @@ -<formalRegexp> +<FormalRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -35,4 +35,4 @@ </alternation> </alternation> </alternation> -</formalRegexp> +</FormalRegExp> diff --git a/examples2/regexp/formal-aag.oppa.4.14.xml b/examples2/regexp/formal-aag.oppa.4.14.xml index cc5b84bd170190451be6862545662604e689411c..fbbbbfd9555242537b1b0704da1a1e7d142b6e87 100644 --- a/examples2/regexp/formal-aag.oppa.4.14.xml +++ b/examples2/regexp/formal-aag.oppa.4.14.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -20,4 +20,4 @@ </concatenation> </alternation> </iteration> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/regexp.xml b/examples2/regexp/regexp.xml index b7e34b3c518e8fc1852b8f03d5786e7075a08c4e..d23d63e18f00a157679defe6c4a4b2b1aa9e4248 100644 --- a/examples2/regexp/regexp.xml +++ b/examples2/regexp/regexp.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> diff --git a/examples2/regexp/regexp2.xml b/examples2/regexp/regexp2.xml index 1593a027d26998d8ce2f549f49a0bcde7c50f814..416b2944d424f1854b076db29ea6696db176d89b 100644 --- a/examples2/regexp/regexp2.xml +++ b/examples2/regexp/regexp2.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> diff --git a/examples2/regexp/regexp3.xml b/examples2/regexp/regexp3.xml index ec2de6c97aa2e375f62af23ae01fbe70b7670645..f21b3ac3a416896838cc1b040837cd6290881acc 100644 --- a/examples2/regexp/regexp3.xml +++ b/examples2/regexp/regexp3.xml @@ -1,4 +1,4 @@ -<regexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><String>We</String></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><String>have</String></PrimitiveLabel></LabeledSymbol> @@ -33,4 +33,4 @@ </iteration> </iteration> </iteration> -</regexp> +</UnboundedRegExp> diff --git a/examples2/regexp/regexp4.xml b/examples2/regexp/regexp4.xml index 3cb65a3158b24b2cd9c93cd38afb4530c5d46e13..66d982807e4e1dc6233db9313d3c2a74a262eda0 100644 --- a/examples2/regexp/regexp4.xml +++ b/examples2/regexp/regexp4.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> diff --git a/examples2/regexp/unbounded.oppa.4.13.d0.xml b/examples2/regexp/unbounded.oppa.4.13.d0.xml index da1209071608ce5069f84f3e816be91c8324f84a..6f16fd749babe10bc4595154b2c61133832783c3 100644 --- a/examples2/regexp/unbounded.oppa.4.13.d0.xml +++ b/examples2/regexp/unbounded.oppa.4.13.d0.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -16,4 +16,4 @@ </concatenation> <epsilon></epsilon> </alternation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.13.d00.xml b/examples2/regexp/unbounded.oppa.4.13.d00.xml index 3d9e8870681fb7215c6d8c0fb5d40947eb7e391d..3bb2e02aebefce5d6202796e17b69fe9f2dd542b 100644 --- a/examples2/regexp/unbounded.oppa.4.13.d00.xml +++ b/examples2/regexp/unbounded.oppa.4.13.d00.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -11,4 +11,4 @@ <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> </alternation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.13.xml b/examples2/regexp/unbounded.oppa.4.13.xml index e23336c11daa1bf1222e552de4a4607a6ff083d8..31bdad1d3eeb50b32fd092096a67fda6c09be4d5 100644 --- a/examples2/regexp/unbounded.oppa.4.13.xml +++ b/examples2/regexp/unbounded.oppa.4.13.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -27,4 +27,4 @@ <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> </alternation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.14.d1.xml b/examples2/regexp/unbounded.oppa.4.14.d1.xml index ce3e635c23500e5791b70ad7548b0f3f13e10111..2506ede2b284132cdff16243433745bd4c06d2f9 100644 --- a/examples2/regexp/unbounded.oppa.4.14.d1.xml +++ b/examples2/regexp/unbounded.oppa.4.14.d1.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -25,4 +25,4 @@ </alternation> </iteration> </concatenation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.14.d10.xml b/examples2/regexp/unbounded.oppa.4.14.d10.xml index 16f580c1e643ce1042e8155f79a3b24c2af0fb82..d9ec8f89bd49039009fbc0dabeb5d4bb0502734b 100644 --- a/examples2/regexp/unbounded.oppa.4.14.d10.xml +++ b/examples2/regexp/unbounded.oppa.4.14.d10.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -33,4 +33,4 @@ </alternation> </iteration> </concatenation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.14.xml b/examples2/regexp/unbounded.oppa.4.14.xml index dfa486ca6f448f07e7288d765c40d8408f9329a0..599460023607df5a66798a0b976ff024658447c4 100644 --- a/examples2/regexp/unbounded.oppa.4.14.xml +++ b/examples2/regexp/unbounded.oppa.4.14.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -20,4 +20,4 @@ </concatenation> </alternation> </iteration> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.15.d100.xml b/examples2/regexp/unbounded.oppa.4.15.d100.xml index 8fdd212000ee879703b3933b0ca22564afc989ca..373baa53a29c122c1f5fa8daa6df479a1db54420 100644 --- a/examples2/regexp/unbounded.oppa.4.15.d100.xml +++ b/examples2/regexp/unbounded.oppa.4.15.d100.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -15,4 +15,4 @@ </concatenation> <epsilon></epsilon> </alternation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.15.xml b/examples2/regexp/unbounded.oppa.4.15.xml index 9bfc08f3190d96173840b6b35ecb369f401eb3b8..9d33898b2efc38f0e50786f31e6099f2cc7a5a95 100644 --- a/examples2/regexp/unbounded.oppa.4.15.xml +++ b/examples2/regexp/unbounded.oppa.4.15.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -13,4 +13,4 @@ </iteration> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.16.i1.xml b/examples2/regexp/unbounded.oppa.4.16.i1.xml index 7140d14893a2b7fefbe9b5983ab1e1825553ed83..68aa7a0efeba640bbc1b4cd34609b1de4c650a9a 100644 --- a/examples2/regexp/unbounded.oppa.4.16.i1.xml +++ b/examples2/regexp/unbounded.oppa.4.16.i1.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -17,4 +17,4 @@ <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> </alternation> -</unboundedRegexp> +</UnboundedRegExp> diff --git a/examples2/regexp/unbounded.oppa.4.16.xml b/examples2/regexp/unbounded.oppa.4.16.xml index c7fe8d6a6bdad99c6a4c0d9de78f900c78e3851f..68be01d4863303939ff425217979f5492b0d07cf 100644 --- a/examples2/regexp/unbounded.oppa.4.16.xml +++ b/examples2/regexp/unbounded.oppa.4.16.xml @@ -1,4 +1,4 @@ -<unboundedRegexp> +<UnboundedRegExp> <alphabet> <LabeledSymbol><PrimitiveLabel><Integer>0</Integer></PrimitiveLabel></LabeledSymbol> <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> @@ -15,4 +15,4 @@ <LabeledSymbol><PrimitiveLabel><Integer>1</Integer></PrimitiveLabel></LabeledSymbol> </concatenation> </alternation> -</unboundedRegexp> +</UnboundedRegExp>