BESTokenizer Class Reference

tokenizer for the BES request command string More...

#include <BESTokenizer.h>

Inheritance diagram for BESTokenizer:

Inheritance graph
[legend]
Collaboration diagram for BESTokenizer:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 BESTokenizer ()
 ~BESTokenizer ()
void tokenize (const char *p)
 tokenize the BES request/command string
string & get_first_token ()
 returns the first token from the token list
string & get_current_token ()
 returns the current token from the token list
string & get_next_token ()
 returns the next token from the token list
void parse_error (const string &s="")
 throws an exception giving the tokens up to the point of the problem
string parse_container_name (const string &s, unsigned int &type)
 parses a container name for constraint and attributes
string remove_quotes (const string &s)
 removes quotes from a quoted token
void dump_tokens ()
 dump the tokens that have been tokenized in the order in which they are parsed.
virtual void dump (ostream &strm) const
 dumps information about this object

Detailed Description

tokenizer for the BES request command string

BESTokenizer tokenizes an BES request command string, such as a get request, a define command, a set command, etc... Tokens are separated by the following characters:

'"' ' ' '
' 0x0D 0x0A

When the tokenizer sees a double quote it then finds the next double quote and includes all test between the quotes, and including the quotes, as a single token.

If there is any problem in the syntax of the request or command then you can use the method parse_error, which will display all of the tokens up to the point of the error.

If the user of the tokenizer attempts to access the next token before the first token is accessed, a BESExcpetion is thrown.

If the user of the tokenizer attempts to access more tokens than were read in, a BESException is thrown.

See also:
BESException

Definition at line 72 of file BESTokenizer.h.


Constructor & Destructor Documentation

BESTokenizer::BESTokenizer (  ) 

Definition at line 41 of file BESTokenizer.cc.

BESTokenizer::~BESTokenizer (  ) 

Definition at line 44 of file BESTokenizer.cc.


Member Function Documentation

void BESTokenizer::tokenize ( const char *  p  ) 

tokenize the BES request/command string

BESTokenizer tokenizes a BES request command string, such as a get request, a define command, a set command, etc... Tokens are separated by the following characters:

'"' ' ' '
' 0x0D 0x0A

When the tokenizer sees a double quote it then finds the next double quote and includes all test between the quotes, and including the quotes, as a single token.

When a "\" is character is encountered it is treated as an escape character. The "\" is removed from the token and the character following it is added to the token - even if it's a double qoute.

Parameters:
p request command string
Exceptions:
BESException if quoted text is missing an end quote, if the request string is not terminated by a semiclon, if the number of tokens is less than 2.
See also:
BESException

Definition at line 158 of file BESTokenizer.cc.

References parse_error().

Referenced by BESCmdParser::parse().

Here is the call graph for this function:

string & BESTokenizer::get_first_token (  ) 

returns the first token from the token list

This method will return the first token from the token list. Whether the caller has accessed tokens already or not, the caller is returned to the beginning of the list.

Returns:
the first token in the token list

Definition at line 82 of file BESTokenizer.cc.

Referenced by BESCmdParser::parse().

string & BESTokenizer::get_current_token (  ) 

returns the current token from the token list

Returns the current token from the token list and returns it to the caller.

Returns:
current token
Exceptions:
BESException if the first token has not yet been retrieved or if the caller is attempting to access more tokens than are available.
See also:
BESException

Definition at line 97 of file BESTokenizer.cc.

References parse_error().

Here is the call graph for this function:

string & BESTokenizer::get_next_token (  ) 

returns the next token from the token list

Returns the next token from the token list and returns it to the caller.

Returns:
next token
Exceptions:
BESException if the first token has not yet been retrieved or if the caller is attempting to access more tokens than are available.
See also:
BESException

Definition at line 119 of file BESTokenizer.cc.

References parse_error().

Referenced by BESSetCommand::parse_options(), BESDefineCommand::parse_options(), BESCommand::parse_options(), OPENDAP_CLASSOPENDAP_COMMANDCommand::parse_request(), BESShowCommand::parse_request(), BESSetContextCommand::parse_request(), BESSetContainerCommand::parse_request(), BESGetCommand::parse_request(), BESDelDefsCommand::parse_request(), BESDelDefCommand::parse_request(), BESDelContainersCommand::parse_request(), BESDelContainerCommand::parse_request(), BESDefineCommand::parse_request(), and BESCatalogCommand::parse_request().

Here is the call graph for this function:

void BESTokenizer::parse_error ( const string &  s = ""  ) 

throws an exception giving the tokens up to the point of the problem

Throws an excpetion using the passed error string, and adding to it the tokens that have been read leading up to the point that this method is called.

Parameters:
s error string passed by caller to be display with list of tokens
Exceptions:
BESException with the passed error string as well as all tokens leading up to the error.

Definition at line 59 of file BESTokenizer.cc.

Referenced by get_current_token(), get_next_token(), parse_container_name(), OPENDAP_CLASSOPENDAP_COMMANDCommand::parse_request(), BESTermCommand::parse_request(), BESShowCommand::parse_request(), BESSetContextCommand::parse_request(), BESSetContainerCommand::parse_request(), BESSetCommand::parse_request(), BESGetCommand::parse_request(), BESDeleteCommand::parse_request(), BESDelDefsCommand::parse_request(), BESDelDefCommand::parse_request(), BESDelContainersCommand::parse_request(), BESDelContainerCommand::parse_request(), BESDefineCommand::parse_request(), BESCatalogCommand::parse_request(), remove_quotes(), and tokenize().

string BESTokenizer::parse_container_name ( const string &  s,
unsigned int &  type 
)

parses a container name for constraint and attributes

This method parses a string that contains either a constraint for a container or attributes for a container. If it is a constraint then the type is set to 1, if it is attributes for the container then type is set to 2. The syntax should look like the following.

<container_name>.constraint= or <container_name>.attributes=

The equal sign must be present.

Parameters:
s the string to be parsed to determine if constraint or attributes
type set to 1 if constraint or 2 if attributes
Returns:
the container name
Exceptions:
BESException if the syntax is incorrect
See also:
BESException

Definition at line 256 of file BESTokenizer.cc.

References parse_error().

Referenced by BESDefineCommand::parse_request().

Here is the call graph for this function:

string BESTokenizer::remove_quotes ( const string &  s  ) 

removes quotes from a quoted token

Removes quotes from a quoted token. The passed string must begin with a double quote and must end with a double quote.

Parameters:
s string where the double quotes are removed.
Returns:
the unquoted token
Exceptions:
BESException if the string does not begin and end with a double quote
See also:
BESException

Definition at line 293 of file BESTokenizer.cc.

References parse_error().

Referenced by BESGetCommand::parse_request(), BESDefineCommand::parse_request(), and BESCatalogCommand::parse_request().

Here is the call graph for this function:

void BESTokenizer::dump_tokens (  ) 

dump the tokens that have been tokenized in the order in which they are parsed.

Dumps to standard out the tokens that were parsed from the request/command string. If the tokens were quoted, the quotes are kept in. The tokens are all displayed with double quotes around them to show if there are any spaces or special characters in the token.

Definition at line 309 of file BESTokenizer.cc.

void BESTokenizer::dump ( ostream &  strm  )  const [virtual]

dumps information about this object

Displays the pointer value of this instance

Parameters:
strm C++ i/o stream to dump the information to

Implements BESObj.

Definition at line 324 of file BESTokenizer.cc.

References BESIndent::Indent(), BESIndent::LMarg(), and BESIndent::UnIndent().

Here is the call graph for this function:


The documentation for this class was generated from the following files:
Generated on Fri Nov 30 12:13:44 2007 for OPeNDAP Back End Server (BES) by  doxygen 1.5.1