]> git.lizzy.rs Git - nothing.git/blobdiff - src/ebisp/parser.c
Add TODO(#928)
[nothing.git] / src / ebisp / parser.c
index a9f70deaf86cef0d98e7cffbb13695d5fba3131f..b48287bd5fc260891690583eedf33aa3b739cf40 100644 (file)
@@ -10,7 +10,6 @@
 #include "ebisp/builtins.h"
 #include "ebisp/parser.h"
 #include "system/lt.h"
-#include "system/lt/lt_adapters.h"
 
 #define MAX_BUFFER_LENGTH (5 * 1000 * 1000)
 
@@ -123,7 +122,7 @@ static struct ParseResult parse_string(Gc *gc, struct Token current_token)
 static struct ParseResult parse_number(Gc *gc, struct Token current_token)
 {
     char *endptr = 0;
-    const long int x = strtoimax(current_token.begin, &endptr, 10);
+    const long int x = strtol(current_token.begin, &endptr, 10);
 
     if (current_token.begin == endptr || current_token.end != endptr) {
         return parse_failure("Expected number", current_token.begin);
@@ -217,6 +216,10 @@ struct ParseResult read_all_exprs_from_string(Gc *gc, const char *str)
     trace_assert(str);
 
     struct Token current_token = next_token(str);
+    if (*current_token.end == 0) {
+        return parse_success(NIL(gc), current_token.end);
+    }
+
     struct ParseResult parse_result = parse_expr(gc, current_token);
     if (parse_result.is_error) {
         return parse_result;
@@ -247,9 +250,6 @@ struct ParseResult read_expr_from_file(Gc *gc, const char *filename)
     trace_assert(filename);
 
     Lt *lt = create_lt();
-    if (lt == NULL) {
-        return parse_failure("Could not create Lt object", NULL);
-    }
 
     FILE *stream = PUSH_LT(lt, fopen(filename, "rb"), fclose_lt);
     if (!stream) {
@@ -299,9 +299,6 @@ struct ParseResult read_all_exprs_from_file(Gc *gc, const char *filename)
     trace_assert(filename);
 
     Lt *lt = create_lt();
-    if (lt == NULL) {
-        return parse_failure("Could not create Lt object", NULL);
-    }
 
     FILE *stream = PUSH_LT(lt, fopen(filename, "rb"), fclose_lt);
     if (!stream) {