MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / parse

Method parse

extlibs/catch/include/catch/catch.hpp:9104–9138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9102 using ParserBase::parse;
9103
9104 auto parse( std::string const&, TokenStream const &tokens ) const -> InternalParseResult override {
9105 auto validationResult = validate();
9106 if( !validationResult )
9107 return InternalParseResult( validationResult );
9108
9109 auto remainingTokens = tokens;
9110 if( remainingTokens && remainingTokens->type == TokenType::Option ) {
9111 auto const &token = *remainingTokens;
9112 if( isMatch(token.token ) ) {
9113 if( m_ref->isFlag() ) {
9114 auto flagRef = static_cast<detail::BoundFlagRefBase*>( m_ref.get() );
9115 auto result = flagRef->setFlag( true );
9116 if( !result )
9117 return InternalParseResult( result );
9118 if( result.value() == ParseResultType::ShortCircuitAll )
9119 return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
9120 } else {
9121 auto valueRef = static_cast<detail::BoundValueRefBase*>( m_ref.get() );
9122 ++remainingTokens;
9123 if( !remainingTokens )
9124 return InternalParseResult::runtimeError( "Expected argument following " + token.token );
9125 auto const &argToken = *remainingTokens;
9126 if( argToken.type != TokenType::Argument )
9127 return InternalParseResult::runtimeError( "Expected argument following " + token.token );
9128 auto result = valueRef->setValue( argToken.token );
9129 if( !result )
9130 return InternalParseResult( result );
9131 if( result.value() == ParseResultType::ShortCircuitAll )
9132 return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
9133 }
9134 return InternalParseResult::ok( ParseState( ParseResultType::Matched, ++remainingTokens ) );
9135 }
9136 }
9137 return InternalParseResult::ok( ParseState( ParseResultType::NoMatch, remainingTokens ) );
9138 }
9139
9140 auto validate() const -> Result override {
9141 if( m_optNames.empty() )

Callers

nothing calls this directly

Calls 6

ParseStateClass · 0.85
isFlagMethod · 0.45
getMethod · 0.45
setFlagMethod · 0.45
valueMethod · 0.45
setValueMethod · 0.45

Tested by

no test coverage detected