symbolic4
parser.c File Reference
#include "symbolic4.h"

Go to the source code of this file.

Functions

expression_type get_expression_type (char source)
 Determines the expression type of a character. More...
 
expression_identifier get_value_identifier (char source)
 Determines the expression identifier of a character of the type EXPT_VALUE. More...
 
expression_identifier get_operator_identifier (char source)
 Determines the expression identifier of a character of the type EXPT_OPERATION. More...
 
expression_identifier get_control_identifier (char source)
 Determines the expression identifier of a character of the type EXPT_CONTROL. More...
 
void append_multiplication_if_necessary (expression *tokens)
 Appends a multiplication expression if necessary. More...
 
uint8_t tokenize_buffer (expression *tokens, char *buffer)
 
uint8_t string_to_literal (expression **result, const char *source)
 
uint8_t tokenize_value_expression (expression *tokens, uint8_t *index, const char *source)
 
void tokenize_operator_expression (expression *tokens, char source)
 
void tokenize_control_expression (expression *tokens, char source)
 
uint8_t tokenize (expression *tokens, const char *query)
 
uint8_t validate (expression *tokens)
 
void merge_expressions_with_operator (expression *output_stack, expression *operator_stack)
 
void parse_control_expression (expression *tokens, uint8_t *index, expression *output_stack, expression *operator_stack)
 
void parse (expression *tokens)
 

Function Documentation

◆ append_multiplication_if_necessary()

void append_multiplication_if_necessary ( expression tokens)

Appends a multiplication expression if necessary.

This function appends a multiplication if

  • the token array is not empty
  • and the last expression in the token array is either a value or a close parenthesis.
Parameters
[in,out]tokensThe token array the multiplication should be appended to.

Definition at line 146 of file parser.c.

◆ get_control_identifier()

expression_identifier get_control_identifier ( char  source)

Determines the expression identifier of a character of the type EXPT_CONTROL.

Parameters
[in]sourceThe character to analyze.
Returns
  • The expression type or EXPT_NULL when an unexpected character was encountered.

Definition at line 118 of file parser.c.

◆ get_expression_type()

expression_type get_expression_type ( char  source)

Determines the expression type of a character.

It can't distinguish between EXPT_VALUE and EXPT_FUNCTION.

Parameters
[in]sourceThe character to analyze.
Returns
  • The expression type or EXPT_NULL when an unexpected character was encountered.

Definition at line 42 of file parser.c.

◆ get_operator_identifier()

expression_identifier get_operator_identifier ( char  source)

Determines the expression identifier of a character of the type EXPT_OPERATION.

Parameters
[in]sourceThe character to analyze.
Returns
  • The expression type or EXPT_NULL when an unexpected character was encountered.

Definition at line 88 of file parser.c.

◆ get_value_identifier()

expression_identifier get_value_identifier ( char  source)

Determines the expression identifier of a character of the type EXPT_VALUE.

Parameters
[in]sourceThe character to analyze.
Returns
  • The expression type or EXPT_NULL when an unexpected character was encountered.

Definition at line 66 of file parser.c.

◆ merge_expressions_with_operator()

void merge_expressions_with_operator ( expression output_stack,
expression operator_stack 
)

Definition at line 375 of file parser.c.

◆ parse()

void parse ( expression tokens)

Definition at line 451 of file parser.c.

◆ parse_control_expression()

void parse_control_expression ( expression tokens,
uint8_t *  index,
expression output_stack,
expression operator_stack 
)

Definition at line 411 of file parser.c.

◆ string_to_literal()

uint8_t string_to_literal ( expression **  result,
const char *  source 
)

Definition at line 201 of file parser.c.

◆ tokenize()

uint8_t tokenize ( expression tokens,
const char *  query 
)

Definition at line 293 of file parser.c.

◆ tokenize_buffer()

uint8_t tokenize_buffer ( expression tokens,
char *  buffer 
)

Definition at line 152 of file parser.c.

◆ tokenize_control_expression()

void tokenize_control_expression ( expression tokens,
char  source 
)

Definition at line 281 of file parser.c.

◆ tokenize_operator_expression()

void tokenize_operator_expression ( expression tokens,
char  source 
)

Definition at line 268 of file parser.c.

◆ tokenize_value_expression()

uint8_t tokenize_value_expression ( expression tokens,
uint8_t *  index,
const char *  source 
)

Definition at line 241 of file parser.c.

◆ validate()

uint8_t validate ( expression tokens)

Definition at line 321 of file parser.c.