ContRap-Core
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

crp::Parser Class Reference

Class Parser implements the parser of ContRap commands. More...

#include <parser.h>

Public Types

enum  Qualifier { NORMAL = 0, EXPLICIT = 1, REQUIRED = 2 }
 

Enumerates qualifiers.

More...

Public Member Functions

 Parser (Engine *engine)
 Creates a new parser.
 ~Parser ()
 Releases the memory.
DPtr parse (const std::string &command)
 Parses a command string and returns the parse tree of the whole statement in the string.
DPtr parse_file (const std::string &file_name)
 Parses a series of commands from a file.
bool is_operator (const std::string &name)
 Returns a non zero pointer if the operator with the given name exists.
void register_operator (const std::string &name, int precedence, Operator::Notation notation=Operator::PREFIX)
 Registers a new operator.
int get_precedence (const std::string &name)
 Returns the precedence of an operator.

Protected Member Functions

DPtr parse (StringTokenizer &tokenizer)
 Parser methods.
DPtr parse_sequence (StringTokenizer &tokenizer)
DPtr parse_statement (StringTokenizer &tokenizer)
DPtr parse_command (StringTokenizer &tokenizer)
void parse_extends (StringTokenizer &tokenizer, SPtr< Statement > &term)
DPtr parse_select (StringTokenizer &tokenizer, const DPtr &term)
DPtr parse_block (StringTokenizer &tokenizer)
DPtr parse_for (StringTokenizer &tokenizer)
DPtr parse_if (StringTokenizer &tokenizer)
DPtr parse_while (StringTokenizer &tokenizer)
DPtr parse_expression (StringTokenizer &tokenizer, const Operator &previous)
DPtr parse_func_term (StringTokenizer &tokenizer, const Operator &previous)
DPtr parse_term (StringTokenizer &tokenizer)
DPtr parse_function (StringTokenizer &tokenizer)
DPtr parse_class (StringTokenizer &tokenizer)
DPtr parse_assignment (StringTokenizer &tokenizer)
std::string parse_type (StringTokenizer &tokenizer)
std::string parse_type_rec (StringTokenizer &tokenizer)
std::string parse_opname (StringTokenizer &tokenizer)
void parse_func_arguments (StringTokenizer &tokenizer, SPtr< List > list, std::map< std::string, DPtr > &options)
void parse_arguments (StringTokenizer &tokenizer, SPtr< List > list)
DPtr parse_list (StringTokenizer &tokenizer)
void parse_index (StringTokenizer &tokenizer, SPtr< List > arguments)
void error (StringTokenizer &tokenizer, const std::string &message)
bool is_name (const std::string &name)
bool is_number (const std::string &name)
bool is_terminal (const std::string &name)
bool is_keyword (const std::string &name)
void check_eof (StringTokenizer &tokenizer)

Protected Attributes

std::map< std::string, Operatoroperators
 Operator types.
std::map< std::string, bool > operator_names
 Names of registred operators.
Operator null_operator
 Predefined operator.
Operator max_operator
Engineengine
 Current engine.
SPtr< bool > True
 Boolean constants.
SPtr< bool > False

Detailed Description

Class Parser implements the parser of ContRap commands.

The Parser can partially parse C/C++ types. For this it uses the ObjectFactory instance to determine which objects are C/C++ types.


Member Enumeration Documentation

Enumerates qualifiers.

Enumerator:
NORMAL 
EXPLICIT 
REQUIRED 

Constructor & Destructor Documentation

crp::Parser::Parser ( Engine engine)

Creates a new parser.

The parser uses the interpreter to evaluate at parse time the values of numerical constants.

Parameters:
engineCurrent engine
crp::Parser::~Parser ( )

Releases the memory.


Member Function Documentation

void crp::Parser::check_eof ( StringTokenizer tokenizer) [protected]
void crp::Parser::error ( StringTokenizer tokenizer,
const std::string &  message 
) [protected]
int crp::Parser::get_precedence ( const std::string &  name)

Returns the precedence of an operator.

Parameters:
nameName of the operator
Returns:
Precedence of the operator
bool crp::Parser::is_keyword ( const std::string &  name) [protected]
bool crp::Parser::is_name ( const std::string &  name) [protected]
bool crp::Parser::is_number ( const std::string &  name) [protected]
bool crp::Parser::is_operator ( const std::string &  name)

Returns a non zero pointer if the operator with the given name exists.

Parameters:
nameName of the operator
Returns:
True if the name is a registred operator
bool crp::Parser::is_terminal ( const std::string &  name) [protected]
DPtr crp::Parser::parse ( StringTokenizer tokenizer) [protected]

Parser methods.

DPtr crp::Parser::parse ( const std::string &  command)

Parses a command string and returns the parse tree of the whole statement in the string.

Parameters:
commandCommand string
Returns:
Parse tree of the string
void crp::Parser::parse_arguments ( StringTokenizer tokenizer,
SPtr< List list 
) [protected]
DPtr crp::Parser::parse_assignment ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_block ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_class ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_command ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_expression ( StringTokenizer tokenizer,
const Operator previous 
) [protected]
void crp::Parser::parse_extends ( StringTokenizer tokenizer,
SPtr< Statement > &  term 
) [protected]
DPtr crp::Parser::parse_file ( const std::string &  file_name)

Parses a series of commands from a file.

Parameters:
file_nameName of the file
Returns:
Resulting code
DPtr crp::Parser::parse_for ( StringTokenizer tokenizer) [protected]
void crp::Parser::parse_func_arguments ( StringTokenizer tokenizer,
SPtr< List list,
std::map< std::string, DPtr > &  options 
) [protected]
DPtr crp::Parser::parse_func_term ( StringTokenizer tokenizer,
const Operator previous 
) [protected]
DPtr crp::Parser::parse_function ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_if ( StringTokenizer tokenizer) [protected]
void crp::Parser::parse_index ( StringTokenizer tokenizer,
SPtr< List arguments 
) [protected]
DPtr crp::Parser::parse_list ( StringTokenizer tokenizer) [protected]
std::string crp::Parser::parse_opname ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_select ( StringTokenizer tokenizer,
const DPtr term 
) [protected]
DPtr crp::Parser::parse_sequence ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_statement ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_term ( StringTokenizer tokenizer) [protected]
std::string crp::Parser::parse_type ( StringTokenizer tokenizer) [protected]
std::string crp::Parser::parse_type_rec ( StringTokenizer tokenizer) [protected]
DPtr crp::Parser::parse_while ( StringTokenizer tokenizer) [protected]
void crp::Parser::register_operator ( const std::string &  name,
int  precedence,
Operator::Notation  notation = Operator::PREFIX 
)

Registers a new operator.

Parameters:
nameName of the operator
precedencePrecedence of the operator
notationNotation

Field Documentation

Current engine.

SPtr<bool> crp::Parser::False [protected]

Predefined operator.

std::map<std::string, bool> crp::Parser::operator_names [protected]

Names of registred operators.

std::map<std::string, Operator> crp::Parser::operators [protected]

Operator types.

SPtr<bool> crp::Parser::True [protected]

Boolean constants.


The documentation for this class was generated from the following file: