#include "parse.hpp"
Functions | |
bool | iswhitespace (char ch) |
Check whether the character is whitespace. | |
bool | is_legalnumeric (string str) |
Check whether numericstr is an legal numericstr string. | |
bool | is_legaloperator (string str) |
Check whether str is a legal operator. | |
void | readsinglesymbol (string &substring, string &sexpr) |
void | clearwhitespace (string &sexpr) |
Clear the whitespace at the begining and end of string sexpr. | |
bool | is_legalexpr (string sexpr) |
Check whether the s-expression legal. | |
Cell * | makecell (string str) |
Make the cell. | |
Cell * | separate_parse (string &instr) |
Separately parse the sexpr and build the tree. | |
Cell * | parse (string sexpr) |
Recursively parse sexpr and build the parse tree. | |
Variables | |
bool | inparsecar |
void clearwhitespace | ( | string & | sexpr | ) |
Clear the whitespace at the begining and end of string sexpr.
sexpr | The string. |
References iswhitespace().
Referenced by is_legalexpr(), parse(), and separate_parse().
bool is_legalexpr | ( | string | sexpr | ) |
Check whether the s-expression legal.
References clearwhitespace(), is_legalnumeric(), and is_legaloperator().
Referenced by parse().
bool is_legalnumeric | ( | string | str | ) |
Check whether numericstr is an legal numericstr string.
str | The string to be checked |
Referenced by is_legalexpr(), and makecell().
bool is_legaloperator | ( | string | str | ) |
bool iswhitespace | ( | char | ch | ) |
Check whether the character is whitespace.
ch | The character to check. |
Referenced by clearwhitespace(), readfile(), readsinglesymbol(), and separate_parse().
Cell* makecell | ( | string | str | ) |
Make the cell.
str | The string to represent the symbol, int or double. |
References is_legalnumeric(), is_legaloperator(), make_double(), make_int(), and make_symbol().
Referenced by parse().
Cell* parse | ( | string | sexpr | ) |
Recursively parse sexpr and build the parse tree.
sexpr | The s-expression stored in a string variable (note that this version of parse has side effects: it may alter the contents of sexpr). |
References clearwhitespace(), is_legalexpr(), makecell(), and separate_parse().
Referenced by parse_eval_print(), and separate_parse().
void readsinglesymbol | ( | string & | substring, | |
string & | sexpr | |||
) |
References iswhitespace().
Cell * separate_parse | ( | string & | instr | ) |
Separately parse the sexpr and build the tree.
instr | The string which consists of s-expressions. |
References car(), cdr(), clearwhitespace(), cons(), inparsecar, iswhitespace(), parse(), and readsinglesymbol().
Referenced by parse().
bool inparsecar |
Referenced by separate_parse().