change how numbers are stored so they are in an efficent binary format, able to be quickly read by the runtime
This commit is contained in:
@@ -104,7 +104,7 @@ int mpq_set_decimal_str_exp(mpq_t r, const char *str) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (endptr-exp_str>11) {
|
||||
if (endptr - exp_str > 11) {
|
||||
free(buf);
|
||||
return -1;
|
||||
}
|
||||
@@ -176,19 +176,17 @@ int mpq_set_decimal_str_exp(mpq_t r, const char *str) {
|
||||
ParsedValueReturn parse_number(Token *token, char *path) {
|
||||
ParsedValue *parsedValue = checked_malloc(sizeof(ParsedValue));
|
||||
parsedValue->type = AST_NUMBER;
|
||||
mpq_t r;
|
||||
mpq_init(r);
|
||||
int err = mpq_set_decimal_str_exp(r, token->value);
|
||||
mpq_t *r_ptr = malloc(sizeof(mpq_t));
|
||||
mpq_init(*r_ptr);
|
||||
int err = mpq_set_decimal_str_exp(*r_ptr, token->value);
|
||||
if (err) {
|
||||
free_parsed(parsedValue);
|
||||
free(parsedValue);
|
||||
mpq_clear(r);
|
||||
return (ParsedValueReturn){create_err(token->line, token->column,
|
||||
token->length, path, "Parsing Error",
|
||||
"Unable to parse number"),
|
||||
NULL};
|
||||
}
|
||||
char *s = mpq_get_str(NULL, 62, r);
|
||||
mpq_clear(r);
|
||||
parsedValue->data = s;
|
||||
parsedValue->data = r_ptr;
|
||||
return (ParsedValueReturn){no_err, parsedValue};
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "operations/operations.h"
|
||||
#include "return/return.h"
|
||||
#include "string/string.h"
|
||||
#include <gmp-x86_64.h>
|
||||
#include <gmp.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
@@ -220,6 +221,7 @@ void free_parsed(void *ptr) {
|
||||
free_identifier(parsed);
|
||||
break;
|
||||
case AST_NUMBER:
|
||||
mpq_clear(*(mpq_t *)parsed->data);
|
||||
free(parsed->data);
|
||||
break;
|
||||
case AST_STRING:
|
||||
|
||||
Reference in New Issue
Block a user