Parsnip
parsing library
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends
Parsnip::OptionEvaluator Class Reference

Evaluate remainder with a different parser. More...

#include <parsnip_evaluate.h>

Inheritance diagram for Parsnip::OptionEvaluator:
Parsnip::RemainderEvaluator Parsnip::Evaluator

Public Member Functions

virtual bool operator== (const Evaluator &) const override
 Check if two evaluators are the same.
 
virtual void constructSchema (const DictionarySchema &scheme, const Schema::OptionSchemas &option_schemas, const SchemaIntegratorCallback &integrator) const override
 Construct a schema from an evaluator tree.
 
- Public Member Functions inherited from Parsnip::RemainderEvaluator
virtual EvaluatorgetNextEvaluator (const StringType &value) const override
 An evaluator that represents the rest of the command line.
 
virtual void convertToOptionEvaluator () override
 Make any changes to the parse tree to convert it to an options evaluator.
 
 Evaluator ()=default
 
 Evaluator (Evaluator *original)
 Upgrade an evaluator.
 
- Public Member Functions inherited from Parsnip::Evaluator
 Evaluator (Evaluator *original)
 Upgrade an evaluator.
 
int evaluate (ArgvCursor *cursor, Parsnip::Data &result_dict)
 Evaluate a token in the command line, and recurse if there is more to go.
 
bool operator!= (const Evaluator &other) const
 

Static Public Member Functions

static std::vector< OptionEvaluator * > construct (EvaluatorRef &evaluator, std::string option_parser_type, bool iterative, const Parser *parent_parser)
 Construct an evaluator (or validate the existing validator) that parsers the remainder with an option parser.
 
- Static Public Member Functions inherited from Parsnip::Evaluator
static void construct (EvaluatorRef &evaluator, const ArgvCursor &cursor, CommandId id, Parser *parent_parser)
 Construct token handler from the token in a parsing definition.
 

Protected Member Functions

virtual Parsnip::Data evaluateToken (class ArgvCursor *cursor) const override
 Evaluate command line tokens.
 
- Protected Member Functions inherited from Parsnip::Evaluator
void setCommandId (CommandId id)
 Set the command ID in an evaluator.
 

Friends

class OptionParser
 

Additional Inherited Members

- Public Types inherited from Parsnip::Evaluator
using StringType = std::string
 
using CommandId = int
 
- Static Protected Member Functions inherited from Parsnip::Evaluator
static void set_name (EvaluatorRef &target, const std::string &name)
 Assign a name by which to store values for value evaluators.
 
- Protected Attributes inherited from Parsnip::RemainderEvaluator
EvaluatorRef terminating_evaluator
 
- Protected Attributes inherited from Parsnip::Evaluator
CommandId command_id {NoCommand}
 If this completes a command, the command ID.
 
std::string name
 If not empty, the name by which this value shall be accessed.
 

Detailed Description

Evaluate remainder with a different parser.

Member Function Documentation

◆ construct()

std::vector< OptionEvaluator * > Parsnip::OptionEvaluator::construct ( EvaluatorRef &  evaluator,
std::string  option_parser_type,
bool  iterative,
const Parser parent_parser 
)
static

Construct an evaluator (or validate the existing validator) that parsers the remainder with an option parser.

Parameters
evaluatorThe evaluator being constructed.
option_parser_typeThe name of the option parser to use.
iterativeIf true, option parser should iterate.
parent_parserThe containing parser, with previously-defined option parsers to utilize.

◆ constructSchema()

void Parsnip::OptionEvaluator::constructSchema ( const DictionarySchema schema,
const Schema::OptionSchemas &  option_schemas,
const SchemaIntegratorCallback &  integrator 
) const
overridevirtual

Construct a schema from an evaluator tree.

This function depth-first searches the evaluation tree, calling the integrator function at leaf nodes and other valid statement endpoints.

Parameters
schemaThe schema, as constructed from the parse tree root.
option_schemasSchemas for option parsers that may be needed.
integratorAn integrator that merges various statement patterns into a complete schema.
Exceptions
NoSuchKeyA necessary option schema was not found.
SchemaConflictStatement definitions generate schema inconsistencies.

Implements Parsnip::Evaluator.

◆ evaluateToken()

Parsnip::Data Parsnip::OptionEvaluator::evaluateToken ( class ArgvCursor cursor) const
overrideprotectedvirtual

Evaluate command line tokens.

Parameters
cursorProvides tokens from the command line. Must be bumped forward as they are processed.
Returns
Parsnip data object containing evaluated token.

Implements Parsnip::Evaluator.

◆ operator==()

bool Parsnip::OptionEvaluator::operator== ( const Evaluator other) const
overridevirtual

Check if two evaluators are the same.

Subclasses should override this to check their details.

Parameters
otherAnother evaluator to which to compare.

Reimplemented from Parsnip::RemainderEvaluator.


The documentation for this class was generated from the following files: