ContRap-Core
|
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, Operator > | operators |
Operator types. | |
std::map< std::string, bool > | operator_names |
Names of registred operators. | |
Operator | null_operator |
Predefined operator. | |
Operator | max_operator |
Engine * | engine |
Current engine. | |
SPtr< bool > | True |
Boolean constants. | |
SPtr< bool > | False |
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.
crp::Parser::Parser | ( | Engine * | engine | ) |
Creates a new parser.
The parser uses the interpreter to evaluate at parse time the values of numerical constants.
engine | Current engine |
crp::Parser::~Parser | ( | ) |
Releases the memory.
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.
name | Name 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.
name | Name of the 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.
command | Command 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.
file_name | Name of the file |
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.
name | Name of the operator |
precedence | Precedence of the operator |
notation | Notation |
Engine* crp::Parser::engine [protected] |
Current engine.
SPtr<bool> crp::Parser::False [protected] |
Operator crp::Parser::max_operator [protected] |
Operator crp::Parser::null_operator [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.