Replace build_type with visitor functions
This commit is contained in:
@ -210,14 +210,6 @@ namespace boot
|
||||
*/
|
||||
class top_type : public node, public std::enable_shared_from_this<top_type>
|
||||
{
|
||||
public:
|
||||
virtual std::shared_ptr<basic_type> is_basic();
|
||||
virtual std::shared_ptr<array_type> is_array();
|
||||
virtual std::shared_ptr<pointer_type> is_pointer();
|
||||
virtual std::shared_ptr<record_type> is_record();
|
||||
virtual std::shared_ptr<union_type> is_union();
|
||||
virtual std::shared_ptr<procedure_type> is_procedure();
|
||||
|
||||
protected:
|
||||
top_type(const struct position position);
|
||||
};
|
||||
@ -238,8 +230,6 @@ namespace boot
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
const std::string& base_name();
|
||||
|
||||
std::shared_ptr<basic_type> is_basic() override;
|
||||
};
|
||||
|
||||
class array_type : public top_type
|
||||
@ -253,8 +243,6 @@ namespace boot
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
top_type& base();
|
||||
|
||||
std::shared_ptr<array_type> is_array() override;
|
||||
};
|
||||
|
||||
class pointer_type : public top_type
|
||||
@ -266,8 +254,6 @@ namespace boot
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
top_type& base();
|
||||
|
||||
std::shared_ptr<pointer_type> is_pointer() override;
|
||||
};
|
||||
|
||||
using field_t = std::pair<std::string, std::shared_ptr<top_type>>;
|
||||
@ -281,7 +267,6 @@ namespace boot
|
||||
record_type(const struct position position, fields_t&& fields);
|
||||
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
std::shared_ptr<record_type> is_record() override;
|
||||
};
|
||||
|
||||
class union_type : public top_type
|
||||
@ -292,7 +277,6 @@ namespace boot
|
||||
union_type(const struct position position, fields_t&& fields);
|
||||
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
std::shared_ptr<union_type> is_union() override;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -363,7 +347,6 @@ namespace boot
|
||||
procedure_type(const struct position position, no_return_t);
|
||||
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
std::shared_ptr<procedure_type> is_procedure() override;
|
||||
|
||||
virtual ~procedure_type() override;
|
||||
};
|
||||
|
@ -41,7 +41,6 @@ namespace gcc
|
||||
|
||||
tree build_label_decl(const char *name, location_t loc);
|
||||
tree build_procedure_type(boot::procedure_type& type);
|
||||
tree build_type(boot::top_type& type);
|
||||
|
||||
void enter_scope();
|
||||
tree leave_scope();
|
||||
@ -66,31 +65,37 @@ namespace gcc
|
||||
public:
|
||||
generic_visitor(std::shared_ptr<symbol_table> symbol_table);
|
||||
|
||||
void visit(boot::program *program) override;
|
||||
void visit(boot::procedure_definition *definition) override;
|
||||
void visit(boot::procedure_call *call) override;
|
||||
void visit(boot::cast_expression *expression) override;
|
||||
void visit(boot::traits_expression *trait) override;
|
||||
void visit(boot::number_literal<std::int32_t> *literal) override;
|
||||
void visit(boot::number_literal<std::uint32_t> *literal) override;
|
||||
void visit(boot::number_literal<double> *literal) override;
|
||||
void visit(boot::number_literal<bool> *boolean) override;
|
||||
void visit(boot::number_literal<unsigned char> *character) override;
|
||||
void visit(boot::number_literal<std::nullptr_t> *) override;
|
||||
void visit(boot::number_literal<std::string> *string) override;
|
||||
void visit(boot::binary_expression *expression) override;
|
||||
void visit(boot::unary_expression *expression) override;
|
||||
void visit(boot::constant_definition *definition) override;
|
||||
void visit(boot::type_definition *definition) override;
|
||||
void visit(boot::variable_declaration *declaration) override;
|
||||
void visit(boot::variable_expression *expression) override;
|
||||
void visit(boot::array_access_expression *expression) override;
|
||||
void visit(boot::field_access_expression *expression) override;
|
||||
void visit(boot::dereference_expression *expression) override;
|
||||
void visit(boot::block *block) override;
|
||||
void visit(boot::assign_statement *statement) override;
|
||||
void visit(boot::if_statement *statement) override;
|
||||
void visit(boot::while_statement *statement) override;
|
||||
virtual void visit(boot::program *program) override;
|
||||
virtual void visit(boot::procedure_definition *definition) override;
|
||||
virtual void visit(boot::procedure_call *call) override;
|
||||
virtual void visit(boot::cast_expression *expression) override;
|
||||
virtual void visit(boot::traits_expression *trait) override;
|
||||
virtual void visit(boot::number_literal<std::int32_t> *literal) override;
|
||||
virtual void visit(boot::number_literal<std::uint32_t> *literal) override;
|
||||
virtual void visit(boot::number_literal<double> *literal) override;
|
||||
virtual void visit(boot::number_literal<bool> *boolean) override;
|
||||
virtual void visit(boot::number_literal<unsigned char> *character) override;
|
||||
virtual void visit(boot::number_literal<std::nullptr_t> *) override;
|
||||
virtual void visit(boot::number_literal<std::string> *string) override;
|
||||
virtual void visit(boot::binary_expression *expression) override;
|
||||
virtual void visit(boot::unary_expression *expression) override;
|
||||
virtual void visit(boot::constant_definition *definition) override;
|
||||
virtual void visit(boot::type_definition *definition) override;
|
||||
virtual void visit(boot::variable_declaration *declaration) override;
|
||||
virtual void visit(boot::variable_expression *expression) override;
|
||||
virtual void visit(boot::array_access_expression *expression) override;
|
||||
virtual void visit(boot::field_access_expression *expression) override;
|
||||
virtual void visit(boot::dereference_expression *expression) override;
|
||||
virtual void visit(boot::block *block) override;
|
||||
virtual void visit(boot::assign_statement *statement) override;
|
||||
virtual void visit(boot::if_statement *statement) override;
|
||||
virtual void visit(boot::while_statement *statement) override;
|
||||
virtual void visit(boot::basic_type *type) override;
|
||||
virtual void visit(boot::array_type *type) override;
|
||||
virtual void visit(boot::pointer_type *type) override;
|
||||
virtual void visit(boot::record_type *type) override;
|
||||
virtual void visit(boot::union_type *type) override;
|
||||
virtual void visit(boot::procedure_type *type) override;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user