FuncSketch
Loading...
Searching...
No Matches
func_sketch::parser::ExpressionGrammar Class Reference

Class of grammar for parsing expressions. More...

#include <func_sketch/parser/expression_grammar.h>

Inheritance diagram for func_sketch::parser::ExpressionGrammar:
Collaboration diagram for func_sketch::parser::ExpressionGrammar:

Public Types

using IteratorType = std::string::const_iterator
 Type of iterator.

Public Member Functions

 ExpressionGrammar ()
 Constructor.
const std::string & error_message () const noexcept
 Get the error message from the last parse attempt.
void clear_error_message () noexcept
 Clear the error message.
ParsedExpression parse (const std::string &str)
 Parse with error handling.

Private Types

template<typename T>
using Rule
 Type of rules.

Private Attributes

Rule< Compleximaginary_number_rule_
 Rule of imaginary numbers.
Rule< ParsedLiteralliteral_rule_
 Rule of literals.
Rule< ParsedIdentifieridentifier_rule_
 Rule of identifiers.
Rule< ParsedFunctionCallExpressionfunction_call_expr_rule_
 Rule of function call expressions.
Rule< ParsedExpressionatomic_value_expr_rule_
 Rule of atomic value expressions.
Rule< ParsedExpressionvalue_expr_rule_
 Rule of value expressions.
Rule< ParsedExpressionfactor_expr_rule_
 Rule of factor expressions.
Rule< ParsedExpressionunary_expr_rule_
 Rule of unary expressions.
Rule< ParsedExpressionterm_expr_rule_
 Rule of term expressions.
Rule< ParsedExpressionsum_expr_rule_
 Rule of sum expressions.
Rule< ParsedExpressionexpr_rule_
 Rule of the whole expression.
std::string error_message_
 Error message from the last parse attempt.

Detailed Description

Class of grammar for parsing expressions.

Definition at line 34 of file expression_grammar.h.

Member Typedef Documentation

◆ IteratorType

using func_sketch::parser::ExpressionGrammar::IteratorType = std::string::const_iterator

Type of iterator.

Definition at line 39 of file expression_grammar.h.

◆ Rule

template<typename T>
using func_sketch::parser::ExpressionGrammar::Rule
private
Initial value:
boost::spirit::qi::rule<IteratorType, T(),
boost::spirit::ascii::space_type>
std::string::const_iterator IteratorType
Type of iterator.

Type of rules.

Template Parameters
TType of the value of the rule.

Definition at line 75 of file expression_grammar.h.

Member Function Documentation

◆ error_message()

const std::string & func_sketch::parser::ExpressionGrammar::error_message ( ) const
nodiscardnoexcept

Get the error message from the last parse attempt.

Returns
Error message if parsing failed, empty string otherwise.

◆ parse()

ParsedExpression func_sketch::parser::ExpressionGrammar::parse ( const std::string & str)
nodiscard

Parse with error handling.

Parameters
[in]strString to parse.
Returns
Parsed expression.
Exceptions
InvalidExpressionExceptionIf parsing failed.

Member Data Documentation

◆ imaginary_number_rule_

Rule<Complex> func_sketch::parser::ExpressionGrammar::imaginary_number_rule_
private

Rule of imaginary numbers.

Definition at line 79 of file expression_grammar.h.

◆ literal_rule_

Rule<ParsedLiteral> func_sketch::parser::ExpressionGrammar::literal_rule_
private

Rule of literals.

Definition at line 82 of file expression_grammar.h.

◆ identifier_rule_

Rule<ParsedIdentifier> func_sketch::parser::ExpressionGrammar::identifier_rule_
private

Rule of identifiers.

Definition at line 85 of file expression_grammar.h.

◆ function_call_expr_rule_

Rule<ParsedFunctionCallExpression> func_sketch::parser::ExpressionGrammar::function_call_expr_rule_
private

Rule of function call expressions.

Definition at line 88 of file expression_grammar.h.

◆ atomic_value_expr_rule_

Rule<ParsedExpression> func_sketch::parser::ExpressionGrammar::atomic_value_expr_rule_
private

Rule of atomic value expressions.

Definition at line 91 of file expression_grammar.h.

◆ value_expr_rule_

Rule<ParsedExpression> func_sketch::parser::ExpressionGrammar::value_expr_rule_
private

Rule of value expressions.

Definition at line 94 of file expression_grammar.h.

◆ factor_expr_rule_

Rule<ParsedExpression> func_sketch::parser::ExpressionGrammar::factor_expr_rule_
private

Rule of factor expressions.

Definition at line 97 of file expression_grammar.h.

◆ unary_expr_rule_

Rule<ParsedExpression> func_sketch::parser::ExpressionGrammar::unary_expr_rule_
private

Rule of unary expressions.

Definition at line 100 of file expression_grammar.h.

◆ term_expr_rule_

Rule<ParsedExpression> func_sketch::parser::ExpressionGrammar::term_expr_rule_
private

Rule of term expressions.

Definition at line 103 of file expression_grammar.h.

◆ sum_expr_rule_

Rule<ParsedExpression> func_sketch::parser::ExpressionGrammar::sum_expr_rule_
private

Rule of sum expressions.

Definition at line 106 of file expression_grammar.h.

◆ expr_rule_

Rule<ParsedExpression> func_sketch::parser::ExpressionGrammar::expr_rule_
private

Rule of the whole expression.

Definition at line 109 of file expression_grammar.h.

◆ error_message_

std::string func_sketch::parser::ExpressionGrammar::error_message_
private

Error message from the last parse attempt.

Definition at line 112 of file expression_grammar.h.


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