16 return std::stod(std::string(tok.raw));
20 return std::string(tok.raw);
45 return std::vector<std::string>{
IDENTIFIER($[0]) };
52 return std::move(list);
56extern bf::DefineNonTerminal<G, std::unique_ptr<Node>>
expression;
61 std::vector<UniqueNode> list;
64 return std::move(list);
71 return std::move(list);
82bf::DefineNonTerminal<G, std::unique_ptr<Node>>
expression
93 return std::move(
$[0]);
97 return std::move(
$[1]);
101 return std::move(
$[1]);
138 std::vector<std::string>{},
155bf::DefineNonTerminal<G, std::unique_ptr<Node>>
statement
158 return std::move(
$[0]);
162 return std::move(
$[0]);
169 std::vector<std::unique_ptr<Node>>
list;
172 return std::move(
list);
179 return std::move(
list);
190bf::DefineNonTerminal<G, std::unique_ptr<Node>>
program
bf::DefineTerminal< G, R"(\*)"> OP_MUL(bf::Left, SyntaxOperator)
bf::DefineTerminal< G, R"(,)"> SEPARATOR(SyntaxOperator)
bf::DefineNonTerminal< G, std::unique_ptr< Node > > program
bf::DefineNonTerminal< G, std::vector< std::string > > identifier_list
bf::DefineTerminal< G, R"(plot)"> KW_PLOT(SyntaxKeyword)
bf::DefineNonTerminal< G, std::vector< std::unique_ptr< Node > > > statement_list
bf::DefineTerminal< G, R"(\()"> PAR_OPEN(SyntaxGrouper);bf::DefineTerminal< G, R"(\))"> PAR_CLOSE(SyntaxGrouper)
bf::DefineTerminal< G, R"(as)"> KW_AS(SyntaxKeyword)
bf::DefineTerminal< G, R"(;)"> STMT_DELIMITER(SyntaxOperator)
bf::DefineNonTerminal< G > variable_definition
bf::DefineTerminal< G, R"(\d+(\.\d+)?)", double > NUMBER(SyntaxLiteral, [](auto const &tok) -> ValueType { return std::stod(std::string(tok.raw));})
bf::DefineTerminal< G, R"(given)"> KW_GIVEN(SyntaxKeyword)
bf::DefineTerminal< G, R"(on)"> KW_ON(SyntaxKeyword)
bf::DefineNonTerminal< G, std::unique_ptr< Node > > plot_command
bf::DefineNonTerminal< G, std::vector< std::unique_ptr< Node > > > expression_list
bf::DefineTerminal< G, R"(\-)"> OP_SUB(bf::Left, SyntaxOperator)
bf::DefineTerminal< G, R"(calc)"> KW_CALC(SyntaxKeyword)
bf::DefineTerminal< G, R"(=)"> OP_ASN(bf::Left, SyntaxOperator)
bf::DefineTerminal< G, R"(\/)"> OP_DIV(bf::Left, SyntaxOperator)
bf::DefineTerminal< G, R"(\^)"> OP_EXP(bf::Right, SyntaxOperator)
ParserValueType ValueType
bf::DefineNonTerminal< G, std::unique_ptr< Node > > statement
bf::DefineTerminal< G, R"(\])"> BRK_CLOSE(SyntaxGrouper)
bf::DefineNonTerminal< G, std::unique_ptr< Node > > scoped_block
bf::DefineNonTerminal< G, std::unique_ptr< Node > > function_call
bf::DefineNonTerminal< G, std::unique_ptr< Node > > function_definition
bf::DefineTerminal< G, R"([a-zA-Z]+)", std::string > IDENTIFIER(SyntaxIdentifier, [](auto const &tok) -> ValueType { return std::string(tok.raw);})
bf::DefineNonTerminal< G, std::unique_ptr< Node > > expression
bf::DefineTerminal< G, R"(\[)"> BRK_OPEN(SyntaxGrouper)
bf::DefineTerminal< G, R"(\+)"> OP_ADD(bf::Left, SyntaxOperator)
UniqueNode unique_node(Args &&... args)
std::variant< double, std::string, std::vector< std::string >, UniqueNode, std::vector< UniqueNode > > ParserValueType
bf::GrammarDefinition< ParserValueType, SyntaxHighlightingGroup > ParserGrammarType
bf::NonTerminal< ParserGrammarType > & unlogic_program