Lines Matching full:lexer
2 * JSON lexer
19 #include "json-lexer.h"
267 void json_lexer_init(JSONLexer *lexer, JSONLexerEmitter func)
269 lexer->emit = func;
270 lexer->state = IN_START;
271 lexer->token = qstring_new();
272 lexer->x = lexer->y = 0;
275 static int json_lexer_feed_char(JSONLexer *lexer, char ch)
279 lexer->x++;
281 lexer->x = 0;
282 lexer->y++;
286 new_state = json_lexer[lexer->state][(uint8_t)ch];
287 char_consumed = !TERMINAL_NEEDED_LOOKAHEAD(lexer->state, new_state);
289 qstring_append_chr(lexer->token, ch);
299 lexer->emit(lexer, lexer->token, new_state, lexer->x, lexer->y);
301 QDECREF(lexer->token);
302 lexer->token = qstring_new();
310 lexer->state = new_state;
315 int json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size)
322 err = json_lexer_feed_char(lexer, buffer[i]);
331 int json_lexer_flush(JSONLexer *lexer)
333 return lexer->state == IN_START ? 0 : json_lexer_feed_char(lexer, 0);
336 void json_lexer_destroy(JSONLexer *lexer)
338 QDECREF(lexer->token);