parse.cpp File Reference

#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.
Cellmakecell (string str)
 Make the cell.
Cellseparate_parse (string &instr)
 Separately parse the sexpr and build the tree.
Cellparse (string sexpr)
 Recursively parse sexpr and build the parse tree.

Variables

bool inparsecar

Detailed Description

Implementation of a parser that analyzes a string containing an s-expression, and determines its tree structure.

Function Documentation

void clearwhitespace ( string &  sexpr  ) 

Clear the whitespace at the begining and end of string sexpr.

Parameters:
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.

Parameters:
str The string to be checked
Returns:
ture if numericstr is an legal numericstr string, false otherwise

Referenced by is_legalexpr(), and makecell().

bool is_legaloperator ( string  str  ) 

Check whether str is a legal operator.

Referenced by is_legalexpr(), and makecell().

bool iswhitespace ( char  ch  ) 

Check whether the character is whitespace.

Returns:
True if it is character, false else.
Parameters:
ch The character to check.

Referenced by clearwhitespace(), readfile(), readsinglesymbol(), and separate_parse().

Cell* makecell ( string  str  ) 

Make the cell.

Parameters:
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.

Parameters:
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).
Returns:
A pointer to the conspair cell at the root of the parse tree.

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.

Parameters:
instr The string which consists of s-expressions.
Returns:
A pointer to the conspair cell at the root of the parse tree.

References car(), cdr(), clearwhitespace(), cons(), inparsecar, iswhitespace(), parse(), and readsinglesymbol().

Referenced by parse().


Variable Documentation

bool inparsecar

Referenced by separate_parse().


Generated on Mon Mar 2 17:19:47 2009 for a1 by  doxygen 1.5.8