Implement argument passing
This commit is contained in:
@ -43,7 +43,7 @@ namespace gcc
|
||||
void visit(source::number_literal<std::int32_t> *literal) override;
|
||||
void visit(source::number_literal<double> *literal) override;
|
||||
void visit(source::number_literal<bool> *boolean) override;
|
||||
void visit(source::char_literal *character) override;
|
||||
void visit(source::number_literal<unsigned char> *character) override;
|
||||
void visit(source::string_literal *string) override;
|
||||
void visit(source::binary_expression *expression) override;
|
||||
void visit(source::unary_expression *expression) override;
|
||||
|
@ -90,7 +90,7 @@ namespace source
|
||||
virtual void visit(number_literal<std::int32_t> *) = 0;
|
||||
virtual void visit(number_literal<double> *) = 0;
|
||||
virtual void visit(number_literal<bool> *) = 0;
|
||||
virtual void visit(char_literal *) = 0;
|
||||
virtual void visit(number_literal<unsigned char> *) = 0;
|
||||
virtual void visit(string_literal *) = 0;
|
||||
};
|
||||
|
||||
@ -123,7 +123,7 @@ namespace source
|
||||
virtual void visit(number_literal<std::int32_t> *) override;
|
||||
virtual void visit(number_literal<double> *) override;
|
||||
virtual void visit(number_literal<bool> *) override;
|
||||
virtual void visit(char_literal *) override;
|
||||
virtual void visit(number_literal<unsigned char> *) override;
|
||||
virtual void visit(string_literal *) override;
|
||||
};
|
||||
|
||||
@ -353,12 +353,18 @@ namespace source
|
||||
virtual ~variable_declaration() override;
|
||||
};
|
||||
|
||||
class literal : public expression
|
||||
{
|
||||
protected:
|
||||
explicit literal(const struct position position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Constant definition.
|
||||
*/
|
||||
class constant_definition : public definition
|
||||
{
|
||||
number_literal<std::int32_t> *m_body;
|
||||
literal *m_body;
|
||||
|
||||
public:
|
||||
/**
|
||||
@ -367,10 +373,10 @@ namespace source
|
||||
* \param body Constant value.
|
||||
*/
|
||||
constant_definition(const struct position position, const std::string& identifier,
|
||||
number_literal<std::int32_t> *body);
|
||||
literal *body);
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
number_literal<std::int32_t>& body();
|
||||
literal& body();
|
||||
|
||||
virtual ~constant_definition() override;
|
||||
};
|
||||
@ -624,13 +630,13 @@ namespace source
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class number_literal : public expression
|
||||
class number_literal : public literal
|
||||
{
|
||||
T m_number;
|
||||
|
||||
public:
|
||||
number_literal(const struct position position, const T value)
|
||||
: expression(position), m_number(value)
|
||||
: literal(position), m_number(value)
|
||||
{
|
||||
}
|
||||
|
||||
@ -645,18 +651,7 @@ namespace source
|
||||
}
|
||||
};
|
||||
|
||||
class char_literal : public expression
|
||||
{
|
||||
unsigned char m_character;
|
||||
|
||||
public:
|
||||
char_literal(const struct position position, const unsigned char value);
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
unsigned char character() const;
|
||||
};
|
||||
|
||||
class string_literal : public expression
|
||||
class string_literal : public literal
|
||||
{
|
||||
std::string m_string;
|
||||
|
||||
|
Reference in New Issue
Block a user