5 #include <frith/symbol.hpp>
19 namespace process_line_result
29 namespace operator_precedence
55 greater_than_or_equal
,
68 struct sorted_binary_operator_entry
74 class intermediary_translator
77 intermediary_translator();
78 bool load_module(std::string
const & path
, std::string
const & name
, std::string
& error_message
);
84 std::vector
<module
> modules
;
90 uword indentation_level
;
96 std::string error_message
;
98 uword nested_class_level
;
100 std::vector
<line_of_code
> lines
;
102 symbol_tree_node
* current_node
;
104 bool name_is_used(std::string
const & name
);
105 std::string
const & get_declaration_name();
106 bool name_collision_check();
107 symbol_tree_node
& add_name(symbol::type symbol_type
);
108 match_result::type
process_body(function
* current_function
= 0);
110 bool parse_statement(lexeme_container
& lexemes
, std::size_t offset
, std::size_t end
, symbol_tree_node
& output
);
112 match_result::type
process_class();
113 match_result::type
process_function();
114 bool process_statement(function
& current_function
);
115 process_line_result::type
process_line(function
* active_function
= 0);
117 bool translate_data(module
& target_module
, std::string
const & data
, std::string
const & module_name
, std::string
& error_message_output
);
119 bool error(std::string
const & message
);
122 void lexeme_to_argument_node(lexeme
& input
, parse_tree_node
& output
);
123 void lexeme_to_unary_operator_node(lexeme
& input
, parse_tree_node
& output
, parse_tree_node
& argument
);
124 void lexeme_to_binary_operator_node(lexeme
& input
, parse_tree_node
& output
, parse_tree_node
& left_argument
, parse_tree_node
& right_argument
);