Introduce float type
This commit is contained in:
@@ -58,6 +58,7 @@
|
||||
|
||||
%token <std::string> IDENTIFIER "identifier"
|
||||
%token <std::int32_t> NUMBER "number"
|
||||
%token <float> FLOAT "float"
|
||||
%token <bool> BOOLEAN
|
||||
%token IF WHILE DO
|
||||
%token CONST VAR PROCEDURE
|
||||
@@ -70,7 +71,8 @@
|
||||
%precedence THEN
|
||||
%precedence ELSE
|
||||
|
||||
%type <std::unique_ptr<elna::source::integer_literal>> integer_literal;
|
||||
%type <std::unique_ptr<elna::source::number_literal<std::int32_t>>> integer_literal;
|
||||
%type <std::unique_ptr<elna::source::number_literal<double>>> float_literal;
|
||||
%type <std::unique_ptr<elna::source::boolean_literal>> boolean_literal;
|
||||
%type <std::unique_ptr<elna::source::constant_definition>> constant_definition;
|
||||
%type <std::vector<std::unique_ptr<elna::source::constant_definition>>> constant_definition_part constant_definitions;
|
||||
@@ -141,7 +143,11 @@ procedure_definition_part:
|
||||
| procedure_definitions { std::swap($$, $1); }
|
||||
integer_literal: NUMBER
|
||||
{
|
||||
$$ = std::make_unique<elna::source::integer_literal>(elna::source::make_position(@1), $1);
|
||||
$$ = std::make_unique<elna::source::number_literal<std::int32_t>>(elna::source::make_position(@1), $1);
|
||||
};
|
||||
float_literal: FLOAT
|
||||
{
|
||||
$$ = std::make_unique<elna::source::number_literal<double>>(elna::source::make_position(@1), $1);
|
||||
};
|
||||
boolean_literal: BOOLEAN
|
||||
{
|
||||
@@ -179,6 +185,7 @@ if_statement:
|
||||
}
|
||||
pointer:
|
||||
integer_literal { $$ = std::move($1); }
|
||||
| float_literal { $$ = std::move($1); }
|
||||
| boolean_literal { $$ = std::move($1); }
|
||||
| variable_expression { $$ = std::move($1); }
|
||||
| LEFT_PAREN expression RIGHT_PAREN { $$ = std::move($2); }
|
||||
|
||||
Reference in New Issue
Block a user