6#ifndef VOLK_PARSER_COMMON_H
7#define VOLK_PARSER_COMMON_H
19#define YYCTYPE uint8_t
20#define YYCURSOR it->cur
21#define YYMARKER it->mar
22#define YYLIMIT it->lim
23#define YYFILL fill(it) == 0
26typedef struct parse_it_t {
64static void parse_init (
ParseIterator *it, FILE *fh,
const char *sh)
72 if (!it->
buf) log_error (
"Error allocating lexer buffer.");
98 if (it->
eof)
return 1;
100 size_t shift = it->
tok - it->
buf;
101 size_t used = it->
lim - it->
tok;
109 cur_off = it->
cur - it->
buf,
110 tok_off = it->
tok - it->
buf,
111 lim_off = it->
lim - it->
buf,
112 mar_off = it->
mar - it->
buf;
117 log_error (
"Memory allocation error.");
122 it->
cur = it->
buf + cur_off;
123 it->
tok = it->
buf + tok_off;
124 it->
lim = it->
buf + lim_off;
125 it->
mar = it->
buf + mar_off;
127 log_debug (
"Shifting bytes: %zu", shift);
128 memmove (it->
buf, it->
tok, used);
129 log_trace (
"Limit offset before reading data: %zu", it->
lim - it->
tok);
Codec interface definition and basic elements common to all codecs.
#define YYCTYPE
TTL is UTF-8 encoded.
FILE * fh
Input file handle.
size_t buf_size
Initial allocation for buffer.
unsigned line
Current line no. (for debugging).
YYCTYPE * cur
Next input character to be read (YYCURSOR).
const char * sh
Input string. Exclusive with fh.
bool eof
if we have reached EOF.
YYCTYPE * buf
Start of buffer.
unsigned ct
Number of statements parsed.
YYCTYPE * mar
Most recent match (YYMARKER).
YYCTYPE * tok
Start of current token.