summaryrefslogtreecommitdiffstats
path: root/dimension/common.rules
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2010-11-19 13:51:43 -0500
committerTavian Barnes <tavianator@gmail.com>2010-11-19 13:51:43 -0500
commite220611617c71d9bbb142fb88a85d7c4c41b6b07 (patch)
tree6286a3c88e78d44d9e89b60b40262d69f7413aa0 /dimension/common.rules
parentf71fc5a23b0c4d6d51308318c8f7fab7b2d1c3a1 (diff)
downloaddimension-e220611617c71d9bbb142fb88a85d7c4c41b6b07.tar.xz
Promote to floats whenever integer overflow occurs.
Diffstat (limited to 'dimension/common.rules')
-rw-r--r--dimension/common.rules14
1 files changed, 6 insertions, 8 deletions
diff --git a/dimension/common.rules b/dimension/common.rules
index f4ce31f..b4cf631 100644
--- a/dimension/common.rules
+++ b/dimension/common.rules
@@ -726,16 +726,14 @@ INT: FLOAT {
;
FLOAT_LITERAL: "integer" {
- $$ = dmnsn_new_astnode(DMNSN_AST_INTEGER, @$);
- $$.ptr = dmnsn_malloc(sizeof(long));
- *(long *)$$.ptr = strtol($1, NULL, 0);
- dmnsn_free($1);
+ dmnsn_astnode string = dmnsn_new_astnode(DMNSN_AST_STRING, @$);
+ string.ptr = $1;
+ $$ = dmnsn_new_astnode1(DMNSN_AST_VAL, @$, string);
}
| "float" {
- $$ = dmnsn_new_astnode(DMNSN_AST_FLOAT, @$);
- $$.ptr = dmnsn_malloc(sizeof(double));
- *(double *)$$.ptr = strtod($1, NULL);
- dmnsn_free($1);
+ dmnsn_astnode string = dmnsn_new_astnode(DMNSN_AST_STRING, @$);
+ string.ptr = $1;
+ $$ = dmnsn_new_astnode1(DMNSN_AST_VAL, @$, string);
}
;