summaryrefslogtreecommitdiff
path: root/src/parser.y
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2012-03-27 22:05:00 (GMT)
committerMarius Kintel <marius@kintel.net>2012-03-27 22:05:58 (GMT)
commit327310f190bbd81c7b71b568d5bf72bb900cc9db (patch)
tree9399bb490ecafe9f0c7fd209c680311d829eb631 /src/parser.y
parent4394c7a030ce7a08c95bd1af2e8c38ffcf972439 (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.y31
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;
contact: Jan Huwald // Impressum