mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00

The JSON parser optionally supports interpolation. The code calls it "escape". Awkward, because it uses the same term for escape sequences within strings. The latter usage is consistent with RFC 8259 "The JavaScript Object Notation (JSON) Data Interchange Format" and ISO C. Call the former "interpolation" instead. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20180823164025.12553-38-armbru@redhat.com>
49 lines
906 B
C
49 lines
906 B
C
/*
|
|
* JSON lexer
|
|
*
|
|
* Copyright IBM, Corp. 2009
|
|
*
|
|
* Authors:
|
|
* Anthony Liguori <aliguori@us.ibm.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
|
* See the COPYING.LIB file in the top-level directory.
|
|
*
|
|
*/
|
|
|
|
#ifndef QEMU_JSON_LEXER_H
|
|
#define QEMU_JSON_LEXER_H
|
|
|
|
|
|
typedef enum json_token_type {
|
|
JSON_MIN = 100,
|
|
JSON_LCURLY = JSON_MIN,
|
|
JSON_RCURLY,
|
|
JSON_LSQUARE,
|
|
JSON_RSQUARE,
|
|
JSON_COLON,
|
|
JSON_COMMA,
|
|
JSON_INTEGER,
|
|
JSON_FLOAT,
|
|
JSON_KEYWORD,
|
|
JSON_STRING,
|
|
JSON_INTERP,
|
|
JSON_SKIP,
|
|
JSON_ERROR,
|
|
} JSONTokenType;
|
|
|
|
typedef struct JSONLexer {
|
|
int state;
|
|
GString *token;
|
|
int x, y;
|
|
} JSONLexer;
|
|
|
|
void json_lexer_init(JSONLexer *lexer);
|
|
|
|
void json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);
|
|
|
|
void json_lexer_flush(JSONLexer *lexer);
|
|
|
|
void json_lexer_destroy(JSONLexer *lexer);
|
|
|
|
#endif
|