Literal strings and better literal numbers.

This commit is contained in:
Stephen Dolan committed 2012-09-03 13:57:47 +01:00
1 parent 52487ff812
commit 6041fd7661
4 files changed
+23 -6

No files matched your search

+11 -4
View File
@@ -1,5 +1,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "jv.h"
#include "jv_dtoa.h"
#include "jv_parse.h"
@@ -345,25 +346,31 @@ static pfunc finish(struct jv_parser* p) {
return 0;
}
jv jv_parse(const char* string) {
jv jv_parse_sized(const char* string, int length) {
printf("'%s' [%d]", string, length);
struct jv_parser parser;
jv_parser_init(&parser);
const char* p = string;
char ch;
while ((ch = *p++)) {
while (p < string + length) {
ch = *p++;
presult msg = scan(&parser, ch);
if (msg){
printf("ERROR: %s (parsing [%s])\n", msg, string);
printf("ERROR: %s (parsing '%s')\n", msg, string);
return jv_null();
}
}
presult msg = finish(&parser);
if (msg) {
printf("ERROR: %s (parsing [%s])\n", msg, string);
printf("ERROR: %s (parsing '%s')\n", msg, string);
return jv_null();
}
jv value = jv_copy(parser.next);
jv_parser_free(&parser);
return value;
}
jv jv_parse(const char* string) {
return jv_parse_sized(string, strlen(string));
}