Add a char type
This commit is contained in:
@ -29,7 +29,8 @@ namespace gcc
|
||||
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;
|
||||
void visit(source::boolean_literal *literal) override;
|
||||
void visit(source::number_literal<bool> *boolean) override;
|
||||
void visit(source::char_literal *character) override;
|
||||
void visit(source::binary_expression *expression) override;
|
||||
void visit(source::constant_definition *definition) override;
|
||||
void visit(source::declaration *declaration) override;
|
||||
|
@ -7,10 +7,12 @@
|
||||
|
||||
enum elna_tree_index
|
||||
{
|
||||
ELNA_TI_ENUMERAL_TYPE,
|
||||
ELNA_TI_CHAR_TYPE,
|
||||
ELNA_TI_MAX
|
||||
};
|
||||
|
||||
extern GTY(()) tree elna_global_trees[ELNA_TI_MAX];
|
||||
|
||||
#define enumeral_node elna_global_trees[ELNA_TI_ENUMERAL_TYPE]
|
||||
#define elna_char_type_node elna_global_trees[ELNA_TI_CHAR_TYPE]
|
||||
|
||||
void elna_init_ttree(void);
|
||||
|
@ -48,7 +48,7 @@ namespace source
|
||||
class variable_expression;
|
||||
template<typename T>
|
||||
class number_literal;
|
||||
class boolean_literal;
|
||||
class char_literal;
|
||||
|
||||
/**
|
||||
* Interface for AST visitors.
|
||||
@ -71,7 +71,8 @@ namespace source
|
||||
virtual void visit(variable_expression *) = 0;
|
||||
virtual void visit(number_literal<std::int32_t> *) = 0;
|
||||
virtual void visit(number_literal<double> *) = 0;
|
||||
virtual void visit(boolean_literal *) = 0;
|
||||
virtual void visit(number_literal<bool> *) = 0;
|
||||
virtual void visit(char_literal *) = 0;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -94,8 +95,9 @@ namespace source
|
||||
virtual void visit(type_expression *variable) override;
|
||||
virtual void visit(variable_expression *variable) override;
|
||||
virtual void visit(number_literal<std::int32_t> *number) override;
|
||||
virtual void visit(number_literal<double> *) override;
|
||||
virtual void visit(boolean_literal *boolean) override;
|
||||
virtual void visit(number_literal<double> *number) override;
|
||||
virtual void visit(number_literal<bool> *boolean) override;
|
||||
virtual void visit(char_literal *character) override;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -452,15 +454,15 @@ namespace source
|
||||
}
|
||||
};
|
||||
|
||||
class boolean_literal : public expression
|
||||
class char_literal : public expression
|
||||
{
|
||||
bool m_boolean;
|
||||
unsigned char m_character;
|
||||
|
||||
public:
|
||||
boolean_literal(const struct position position, const bool value);
|
||||
char_literal(const struct position position, const unsigned char value);
|
||||
virtual void accept(parser_visitor *visitor) override;
|
||||
|
||||
bool boolean() const noexcept;
|
||||
unsigned char character() const noexcept;
|
||||
};
|
||||
|
||||
class variable_expression : public expression
|
||||
|
Reference in New Issue
Block a user