MCPcopy Create free account
hub / github.com/RenderKit/embree / parse

Method parse

tutorials/external/catch.hpp:7529–7563  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7527 using ParserBase::parse;
7528
7529 auto parse( std::string const&, TokenStream const &tokens ) const -> InternalParseResult override {
7530 auto validationResult = validate();
7531 if( !validationResult )
7532 return InternalParseResult( validationResult );
7533
7534 auto remainingTokens = tokens;
7535 if( remainingTokens && remainingTokens->type == TokenType::Option ) {
7536 auto const &token = *remainingTokens;
7537 if( isMatch(token.token ) ) {
7538 if( m_ref->isFlag() ) {
7539 auto flagRef = static_cast<detail::BoundFlagRefBase*>( m_ref.get() );
7540 auto result = flagRef->setFlag( true );
7541 if( !result )
7542 return InternalParseResult( result );
7543 if( result.value() == ParseResultType::ShortCircuitAll )
7544 return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
7545 } else {
7546 auto valueRef = static_cast<detail::BoundValueRefBase*>( m_ref.get() );
7547 ++remainingTokens;
7548 if( !remainingTokens )
7549 return InternalParseResult::runtimeError( "Expected argument following " + token.token );
7550 auto const &argToken = *remainingTokens;
7551 if( argToken.type != TokenType::Argument )
7552 return InternalParseResult::runtimeError( "Expected argument following " + token.token );
7553 auto result = valueRef->setValue( argToken.token );
7554 if( !result )
7555 return InternalParseResult( result );
7556 if( result.value() == ParseResultType::ShortCircuitAll )
7557 return InternalParseResult::ok( ParseState( result.value(), remainingTokens ) );
7558 }
7559 return InternalParseResult::ok( ParseState( ParseResultType::Matched, ++remainingTokens ) );
7560 }
7561 }
7562 return InternalParseResult::ok( ParseState( ParseResultType::NoMatch, remainingTokens ) );
7563 }
7564
7565 auto validate() const -> Result override {
7566 if( m_optNames.empty() )

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected