diff options
| author | Nagi5Yeq <wu@x-nagi.com> | 2020-05-14 02:05:13 +0800 |
|---|---|---|
| committer | Nagi5Yeq <wu@x-nagi.com> | 2020-05-14 02:05:13 +0800 |
| commit | d80958f987790f533f5048c2e0e8a1cd5fd9f5a1 (patch) | |
| tree | 48f1fcc577eb9b92b2766a0d354f59f12cf8680f /Parser.y | |
| parent | c7d52437db42232d98e585a52ed2fdf75eb7f1af (diff) | |
use template to make literal nodes
Diffstat (limited to 'Parser.y')
| -rw-r--r-- | Parser.y | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -6,10 +6,10 @@ #include <memory> #include "Location.hh" +#include "Node.hh" namespace pcc { class Driver; - class StringLiteralNode; } } @@ -19,7 +19,6 @@ namespace pcc { %code { #include "Driver.hh" -#include "Node.hh" #define YY_DECL pcc::Parser::symbol_type yylex(pcc::Driver& driver) YY_DECL; @@ -36,15 +35,15 @@ YY_DECL; %token COLON SEMICOLON COMMA DOT ASSIGN LBRACKET RBRACKET LPARENTHESIS RPARENTHESIS %token PROGRAM IDENTIFIER CONST VAR BEGINS ENDS FUNCTION FILE_END %token IF THEN ELSE WHILE DO -%token INTEGER BOOLEAN CHAR REAL STRING +%token BOOLEAN CHAR INTEGER REAL STRING %token ADD SUB MUL REAL_DIV DIV MOD EXP LT LE GT GE EQ NE -%token AND NOT OR XOR TRUE FALSE -%token INTEGER_LITERAL REAL_LITERAL STRING_LITERAL - -%type <int> INTEGER_LITERAL -%type <float> REAL_LITERAL -%type <char*> IDENTIFIER +%token AND NOT OR XOR +%token INTEGER_LITERAL REAL_LITERAL STRING_LITERAL BOOLEAN_LITERAL CHAR_LITERAL +%type <std::string> IDENTIFIER +%type <std::shared_ptr<pcc::BooleanLiteralNode>> BOOLEAN_LITERAL +%type <std::shared_ptr<pcc::IntegerLiteralNode>> INTEGER_LITERAL +%type <std::shared_ptr<pcc::RealLiteralNode>> REAL_LITERAL %type <std::shared_ptr<pcc::StringLiteralNode>> STRING_LITERAL %% @@ -229,8 +228,7 @@ arguments ; literal - : TRUE - | FALSE + : BOOLEAN_LITERAL | INTEGER_LITERAL | REAL_LITERAL | STRING_LITERAL |
