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

Evaluate a keyword in a command line. More...

#include <parsnip_evaluate.h>

Inheritance diagram for Parsnip::KeywordEvaluator:
Parsnip::Evaluator

Public Member Functions

virtual Parsnip::Data evaluateToken (ArgvCursor *cursor) const override
 Store the current keyword as a string, if it's marked for recording.
 
virtual EvaluatorgetNextEvaluator (const StringType &token) const override
 Select an evaluator for the next element based on current token.
 
virtual bool operator== (const Evaluator &other) const override
 Check if two evaluators are the same.
 
virtual void convertToOptionEvaluator () override
 Make any changes to the parse tree to convert it to an options evaluator.
 
virtual void constructSchema (const DictionarySchema &scheme, const Schema::OptionSchemas &option_schemas, const SchemaIntegratorCallback &integrator) const override
 Construct a schema from an evaluator tree.
 
 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 bool is_numeric (const std::string &value)
 
static std::string tolower (std::string value)
 
static void construct (EvaluatorRef &parser, const ArgvCursor &cursor, CommandId id, Parser *parent_parser, const std::string &name, std::string keywords)
 Construct a keyword token handler.
 
- 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.
 

Friends

class ValueEvaluator
 
class OptionEvaluator
 

Additional Inherited Members

- Public Types inherited from Parsnip::Evaluator
using StringType = std::string
 
using CommandId = int
 
- Protected Member Functions inherited from Parsnip::Evaluator
void setCommandId (CommandId id)
 Set the command ID in an evaluator.
 
- 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::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 a keyword in a command line.

Member Function Documentation

◆ construct()

void Parsnip::KeywordEvaluator::construct ( EvaluatorRef &  parser,
const ArgvCursor cursor,
CommandId  id,
Parser parent_parser,
const std::string &  name,
std::string  keywords 
)
static

Construct a keyword token handler.

Construct token handler accepting a list of literal strings from the parsing definition.

Parameters
parserSee Evaluator::construct
cursorSee Evaluator::construct
idSee Evaluator::construct
parent_parserPassed through; see ValueEvaluator::construct.
nameThe name by which to access the selected keyword.
keywordsThe list of keywords, as an alternation string (a|b|c).

◆ constructSchema()

void Parsnip::KeywordEvaluator::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.

◆ convertToOptionEvaluator()

void Parsnip::KeywordEvaluator::convertToOptionEvaluator ( )
overridevirtual

Make any changes to the parse tree to convert it to an options evaluator.

Implements Parsnip::Evaluator.

◆ evaluateToken()

Parsnip::Data Parsnip::KeywordEvaluator::evaluateToken ( ArgvCursor cursor) const
overridevirtual

Store the current keyword as a string, if it's marked for recording.

Implements Parsnip::Evaluator.

◆ Evaluator()

Parsnip::Evaluator::Evaluator ( Evaluator original)

Upgrade an evaluator.

The original must be a TerminatorEvaluator; other type should never be upgraded. Herein we initialize the new evaluator with the relevant bits.

◆ getNextEvaluator()

Evaluator * Parsnip::KeywordEvaluator::getNextEvaluator ( const StringType &  token) const
overridevirtual

Select an evaluator for the next element based on current token.

Implements Parsnip::Evaluator.

◆ operator==()

bool Parsnip::KeywordEvaluator::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::Evaluator.


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