added \\" parsing

This commit is contained in:
2024-01-01 21:03:02 +02:00
parent 789c9706f3
commit b10e8b8827
3 changed files with 9 additions and 5 deletions

View File

@@ -174,9 +174,13 @@ int jlexer_gettoken(jlexer_t * lexer, char* token) {
switch (type) { switch (type) {
case JLEXTYPE_EOF: case JLEXTYPE_EOF:
case JLEXTYPE_WORDL:{ case JLEXTYPE_WORDL:{
token[lexer->tokpos++] = '\0'; if (lexer->tokpos > 0 && token[lexer->tokpos - 1] == '\\') {
lexer->context = JLEXCONT_UNDEF; lexer->tokpos--;
return JLEXTOK_WORD; } else {
token[lexer->tokpos++] = '\0';
lexer->context = JLEXCONT_UNDEF;
return JLEXTOK_WORD;
}
} }
} }
lexer->context = newcontext; lexer->context = newcontext;
@@ -198,7 +202,6 @@ int jlexer_gettoken(jlexer_t * lexer, char* token) {
if (token[i] == 'E' || token[i] == 'e' || token[i] == '.') { if (token[i] == 'E' || token[i] == 'e' || token[i] == '.') {
return JLEXTOK_FLOAT; return JLEXTOK_FLOAT;
} }
} }
return JLEXTOK_INTEG; return JLEXTOK_INTEG;
} }

View File

@@ -39,6 +39,7 @@ int jparser_parse_array(jparser_t * parser, char* arrname) {
int pos = 0; int pos = 0;
while ((type = jlexer_gettoken(lex, token)) != JLEXTOK_END) { while ((type = jlexer_gettoken(lex, token)) != JLEXTOK_END) {
log_debug("pos %d tok 0x%02x: %s\n", pos, type, token); log_debug("pos %d tok 0x%02x: %s\n", pos, type, token);

View File

@@ -1 +1 @@
{"id":-123, "name": "qwerty", "size": -12345E3, "exists": true, "intarr": [ 11E1, 12, 13 ]} {"id":-123, "name": "qwerty", "size": -12345E3, "exists": true, "intarr": [ 11E1, 12, 13 ], "a\"b.c": 567.123 }