diff options
author | Marius Kintel <marius@kintel.net> | 2012-03-27 22:05:00 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2012-03-27 22:05:58 (GMT) |
commit | 327310f190bbd81c7b71b568d5bf72bb900cc9db (patch) | |
tree | 9399bb490ecafe9f0c7fd209c680311d829eb631 /src/parser.y | |
parent | 4394c7a030ce7a08c95bd1af2e8c38ffcf972439 (diff) |
Rewrote the Value class to be based on boost::variant - this should reduce memory footprint and improve performance
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; |