Defines | |
| #define | U_TOKEN_SZ 128 |
Maximum size of input tokens (can be changed at compile time via -DU_TOKEN_SZ=nnn compiler flag). | |
| #define | U_LEXER_ERR(l,...) |
| u_lexer_pos wrapper. | |
| #define | U_LEXER_SKIP(l, pc) |
| u_lexer_skip wrapper. | |
| #define | U_LEXER_NEXT(l, pc) |
| u_lexer_next wrapper. | |
Typedefs | |
| typedef struct u_lexer_s | u_lexer_t |
| Lexer base type. | |
Functions | |
| int | u_lexer_new (const char *s, u_lexer_t **pl) |
Create a new lexer context associated to the NUL-terminated string s. | |
| void | u_lexer_free (u_lexer_t *l) |
| Destroy a previously allocated lexer context. | |
| const char * | u_lexer_geterr (u_lexer_t *l) |
| Accessor method for lexer error string. | |
| int | u_lexer_next (u_lexer_t *l, char *pb) |
| Get next char (included whitespaces) and advance lexer position by one. | |
| int | u_lexer_skip (u_lexer_t *l, char *pb) |
| Get next non-whitespace char and advance lexer position accordingly. | |
| char | u_lexer_peek (u_lexer_t *l) |
| Get the character actually under the lexer cursor. | |
| int | u_lexer_seterr (u_lexer_t *l, const char *fmt,...) |
| Setter method for lexer error string. | |
| void | u_lexer_record_lmatch (u_lexer_t *l) |
| Register left side (i.e. beginning) of a match. | |
| void | u_lexer_record_rmatch (u_lexer_t *l) |
| Register right side (i.e. closing) of the current match. | |
| char * | u_lexer_get_match (u_lexer_t *l, char match[U_TOKEN_SZ]) |
| Extract the matched sub-string. | |
| int | u_lexer_eot (u_lexer_t *l) |
| Tell if we've reached the end of the string. | |
| int | u_lexer_eat_ws (u_lexer_t *l) |
| Advance lexer position until a non-whitespace char is found. | |
| int | u_lexer_expect_char (u_lexer_t *l, char expected) |
| Expect to find the supplied character under lexer cursor. | |
| size_t | u_lexer_pos (u_lexer_t *l) |
| Return the actual position of the lexer cursor. | |
| const char * | u_lexer_lookahead (u_lexer_t *l) |
| Return a pointer to the substring that has not yet been parsed. | |
| int u_lexer_eat_ws | ( | u_lexer_t * | l | ) |
| l | An active lexer context. |
| 0 | on success | |
| -1 | on end of text |
Definition at line 191 of file srcs/toolbox/lexer.c.
References u_lexer_eot().
| int u_lexer_eot | ( | u_lexer_t * | l | ) |
| l | Handler of an active lexer context. |
| 0 | if actual position is not at the end of text | |
| 1 | if actual position is at the end of text |
Definition at line 178 of file srcs/toolbox/lexer.c.
Referenced by u_lexer_eat_ws().
| int u_lexer_expect_char | ( | u_lexer_t * | l, | |
| char | expected | |||
| ) |
| l | An active lexer context. | |
| expected | The character that we expect to be found under the lexer cursor. |
| 0 | on success | |
| ~0 | on failure |
Definition at line 276 of file srcs/toolbox/lexer.c.
References U_LEXER_ERR, U_LEXER_NEXT, and u_lexer_peek().
| void u_lexer_free | ( | u_lexer_t * | l | ) |
| l | Handler to a previously created u_lexer_t object. |
Definition at line 90 of file srcs/toolbox/lexer.c.
References u_free().
Referenced by u_lexer_new(), and u_uri_crumble().
| char * u_lexer_get_match | ( | u_lexer_t * | l, | |
| char | match[U_TOKEN_SZ] | |||
| ) |
| l | An active lexer context. | |
| match | A buffer of at least U_TOKEN_SZ bytes that will hold the matched NUL-terminated substring. |
Definition at line 252 of file srcs/toolbox/lexer.c.
| const char * u_lexer_geterr | ( | u_lexer_t * | l | ) |
| l | Handler of a lexer context that may have generated an error. |
Definition at line 110 of file srcs/toolbox/lexer.c.
| const char * u_lexer_lookahead | ( | u_lexer_t * | l | ) |
| l | An active lexer context. |
Definition at line 78 of file srcs/toolbox/lexer.c.
| int u_lexer_new | ( | const char * | s, | |
| u_lexer_t ** | pl | |||
| ) |
| s | Pointer to the string that has to be parsed. | |
| pl | Handler for the associated lexer instance as a result argument. |
| 0 | on success | |
| ~0 | on failure |
Definition at line 42 of file srcs/toolbox/lexer.c.
References u_lexer_free(), u_strdup(), and u_zalloc().
Referenced by u_uri_crumble().
| int u_lexer_next | ( | u_lexer_t * | l, | |
| char * | pb | |||
| ) |
| l | Handler of an active lexer context. | |
| pb | If non-NULL it will get the next stream character. |
Definition at line 150 of file srcs/toolbox/lexer.c.
| char u_lexer_peek | ( | u_lexer_t * | l | ) |
| l | An active lexer context. |
Definition at line 212 of file srcs/toolbox/lexer.c.
Referenced by u_lexer_expect_char().
| size_t u_lexer_pos | ( | u_lexer_t * | l | ) |
| l | An active lexer context. |
Definition at line 299 of file srcs/toolbox/lexer.c.
| void u_lexer_record_lmatch | ( | u_lexer_t * | l | ) |
| l | An active lexer context. |
Definition at line 224 of file srcs/toolbox/lexer.c.
| void u_lexer_record_rmatch | ( | u_lexer_t * | l | ) |
| l | An active lexer context. |
Definition at line 237 of file srcs/toolbox/lexer.c.
| int u_lexer_seterr | ( | u_lexer_t * | l, | |
| const char * | fmt, | |||
| ... | ||||
| ) |
| l | Handler of an active lexer context. | |
| fmt | printf-like format string. | |
| ... | variable argument list to feed fmt. |
| 0 | on success | |
| ~0 | on failure (bad parameters supplied) |
Definition at line 127 of file srcs/toolbox/lexer.c.
| int u_lexer_skip | ( | u_lexer_t * | l, | |
| char * | pb | |||
| ) |
| l | Handler of an active lexer context. | |
| pb | If non-NULL it will get the next non-whitespace characted from the stream. |
Definition at line 165 of file srcs/toolbox/lexer.c.