aboutsummaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parser.c b/src/parser.c
index 46a94b5..45aeba6 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -140,6 +140,10 @@ ParseResult parse_sexp(Parser *parser) {
return ParseErr(parser, "Unexpected EOF.\n");
}
int next = Parser_peek(parser);
+ if (next == ')') {
+ Parser_getchar(parser);
+ return ParseErr(parser, "Invalid S-Expression.\n");
+ }
if (next == '(') {
return parse_list(parser);
} else if (next == ',') {
@@ -335,7 +339,7 @@ static ParseResult parse_token(Parser *parser, const char *token) {
if (endptr == token + len) return ParseOk(new_integer(parser->ctx, integer));
double real = strtod(token, &endptr);
if (endptr == token + len) return ParseOk(new_real(parser->ctx, real));
- return ParseErr(parser, "Not a number : %s\n.", token);
+ return ParseErr(parser, "Not a number : %s.\n", token);
}
ParseResult parse_string(Parser *parser) {
@@ -345,7 +349,7 @@ ParseResult parse_string(Parser *parser) {
Parser_getchar(parser);
while (Parser_peek(parser) != '"') {
if (Parser_peek(parser) == EOF) {
- return ParseErr(parser, "Unexpected EOF.\n.");
+ return ParseErr(parser, "Unexpected EOF.\n");
}
if (Parser_peek(parser) == '\0') {
ret = ParseErr(parser, "Unexpected zero terminator.\n");