diff options
Diffstat (limited to 'src/parser.y')
-rw-r--r-- | src/parser.y | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/src/parser.y b/src/parser.y index 2f4379a..58ca695 100644 --- a/src/parser.y +++ b/src/parser.y @@ -295,19 +295,13 @@ single_module_instantiation: expr: TOK_TRUE { - $$ = new Expression(); - $$->type = "C"; - $$->const_value = new Value(true); + $$ = new Expression(Value(true)); } | TOK_FALSE { - $$ = new Expression(); - $$->type = "C"; - $$->const_value = new Value(false); + $$ = new Expression(Value(false)); } | TOK_UNDEF { - $$ = new Expression(); - $$->type = "C"; - $$->const_value = new Value(); + $$ = new Expression(Value::undefined); } | TOK_ID { $$ = new Expression(); @@ -323,20 +317,14 @@ expr: free($3); } | TOK_STRING { - $$ = new Expression(); - $$->type = "C"; - $$->const_value = new Value(std::string($1)); - free($1); + $$ = new Expression(Value(std::string($1))); + free($1); } | TOK_NUMBER { - $$ = new Expression(); - $$->type = "C"; - $$->const_value = new Value($1); + $$ = new Expression(Value($1)); } | '[' expr ':' expr ']' { - Expression *e_one = new Expression(); - e_one->type = "C"; - e_one->const_value = new Value(1.0); + Expression *e_one = new Expression(Value(1.0)); $$ = new Expression(); $$->type = "R"; $$->children.push_back($2); @@ -351,10 +339,7 @@ expr: $$->children.push_back($6); } | '[' optional_commas ']' { - $$ = new Expression(); - $$->type = "C"; - $$->const_value = new Value(); - $$->const_value->type = Value::VECTOR; + $$ = new Expression(Value(Value::VectorType())); } | '[' vector_expr optional_commas ']' { $$ = $2; |