|
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.
1.7.3