Implement parameterless prcoedures
This commit is contained in:
@ -32,6 +32,7 @@ namespace gcc
|
||||
|
||||
public:
|
||||
void visit(source::program *program) override;
|
||||
void visit(source::procedure_definition *definition) override;
|
||||
void visit(source::call_statement *statement) override;
|
||||
void visit(source::number_literal<std::int32_t> *literal) override;
|
||||
void visit(source::number_literal<double> *literal) override;
|
||||
@ -42,7 +43,7 @@ namespace gcc
|
||||
void visit(source::unary_expression *expression) override;
|
||||
void visit(source::constant_definition *definition) override;
|
||||
void visit(source::type_definition *definition) override;
|
||||
void visit(source::declaration *declaration) override;
|
||||
void visit(source::variable_declaration *declaration) override;
|
||||
void visit(source::variable_expression *expression) override;
|
||||
void visit(source::array_access_expression *expression) override;
|
||||
void visit(source::field_access_expression *expression) override;
|
||||
|
@ -33,7 +33,7 @@ namespace source
|
||||
reference
|
||||
};
|
||||
|
||||
class declaration;
|
||||
class variable_declaration;
|
||||
class constant_definition;
|
||||
class procedure_definition;
|
||||
class type_definition;
|
||||
@ -64,7 +64,7 @@ namespace source
|
||||
*/
|
||||
struct parser_visitor
|
||||
{
|
||||
virtual void visit(declaration *) = 0;
|
||||
virtual void visit(variable_declaration *) = 0;
|
||||
virtual void visit(constant_definition *) = 0;
|
||||
virtual void visit(procedure_definition *) = 0;
|
||||
virtual void visit(type_definition *) = 0;
|
||||
@ -97,7 +97,7 @@ namespace source
|
||||
*/
|
||||
struct empty_visitor : parser_visitor
|
||||
{
|
||||
virtual void visit(declaration *) override;
|
||||
virtual void visit(variable_declaration *) override;
|
||||
virtual void visit(constant_definition *definition) override;
|
||||
virtual void visit(procedure_definition *definition) override;
|
||||
virtual void visit(type_definition *definition) override;
|
||||
@ -331,7 +331,7 @@ namespace source
|
||||
/**
|
||||
* Variable declaration.
|
||||
*/
|
||||
class declaration : public definition
|
||||
class variable_declaration : public definition
|
||||
{
|
||||
type_expression *m_type;
|
||||
|
||||
@ -343,13 +343,13 @@ namespace source
|
||||
* \param identifier Definition name.
|
||||
* \param type Declared type.
|
||||
*/
|
||||
declaration(const struct position position, const std::string& identifier,
|
||||
variable_declaration(const struct position position, const std::string& identifier,
|
||||
type_expression *type);
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
type_expression& type();
|
||||
|
||||
virtual ~declaration() override;
|
||||
virtual ~variable_declaration() override;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -380,7 +380,7 @@ namespace source
|
||||
class procedure_definition : public definition
|
||||
{
|
||||
block *m_body;
|
||||
std::vector<declaration *> m_parameters;
|
||||
std::vector<variable_declaration *> m_parameters;
|
||||
|
||||
public:
|
||||
/**
|
||||
@ -393,7 +393,7 @@ namespace source
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
block& body();
|
||||
std::vector<declaration *>& parameters();
|
||||
std::vector<variable_declaration *>& parameters();
|
||||
|
||||
virtual ~procedure_definition() override;
|
||||
};
|
||||
@ -597,18 +597,18 @@ namespace source
|
||||
class block : public node
|
||||
{
|
||||
std::vector<definition *> m_definitions;
|
||||
std::vector<declaration *> m_declarations;
|
||||
statement *m_body;
|
||||
|
||||
public:
|
||||
std::vector<definition *> value_definitions;
|
||||
|
||||
block(const struct position position, std::vector<definition *>&& definitions,
|
||||
std::vector<declaration *>&& declarations,
|
||||
std::vector<definition *>&& value_definitions,
|
||||
statement *body);
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
statement& body();
|
||||
std::vector<definition *>& definitions();
|
||||
std::vector<declaration *>& declarations();
|
||||
|
||||
virtual ~block() override;
|
||||
};
|
||||
@ -617,8 +617,7 @@ namespace source
|
||||
{
|
||||
public:
|
||||
program(const struct position position, std::vector<definition *>&& definitions,
|
||||
std::vector<declaration *>&& declarations,
|
||||
statement *body);
|
||||
std::vector<definition *>&& value_definitions, statement *body);
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user