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 {
57static void parse_init (
ParseIterator *it, FILE *fh,
const char *sh)
65 if (!it->
buf) log_error (
"Error allocating lexer buffer.");
91 if (it->
eof)
return 1;
93 size_t shift = it->
tok - it->
buf;
94 size_t used = it->
lim - it->
tok;
102 cur_off = it->
cur - it->
buf,
103 tok_off = it->
tok - it->
buf,
104 lim_off = it->
lim - it->
buf,
105 mar_off = it->
mar - it->
buf;
110 log_error (
"Memory allocation error.");
115 it->
cur = it->
buf + cur_off;
116 it->
tok = it->
buf + tok_off;
117 it->
lim = it->
buf + lim_off;
118 it->
mar = it->
buf + mar_off;
120 log_debug (
"Shifting bytes: %zu", shift);
121 memmove (it->
buf, it->
tok, used);
122 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.