One Level Up
Top Level
userspace/kp_lex.h - ktap
Data types defined
Macros defined
Source code
- #ifndef _KTAP_LEX_H
- #define _KTAP_LEX_H
- #include <stdarg.h>
- #include "../include/err.h"
- #include "../include/ktap_bc.h"
- #include "kp_util.h"
- #define TKDEF(_, __) \
- _(trace) _(trace_end) _(argstr) _(probename) _(ffi) \
- _(arg0)_(arg1) _(arg2) _(arg3) _(arg4) _(arg5) _(arg6) _(arg7) \
- _(arg8) _(arg9) _(profile) _(tick) \
- _(pid) _(tid) _(uid) _(cpu) _(execname) __(incr, +=) \
- __(and, &&) _(break) _(do) _(else) _(elseif) _(end) _(false) \
- _(for) _(function) _(goto) _(if) _(in) __(local, var) _(nil) \
- __(not, !) __(or, ||) \
- _(repeat) _(return) _(then) _(true) _(until) _(while) \
- __(concat, ..) __(dots, ...) __(eq, ==) __(ge, >=) __(le, <=) \
- __(ne, !=) __(label, ::) __(number, <number>) __(name, <name>) \
- __(string, <string>) __(eof, <eof>)
- enum {
- TK_OFS = 256,
- #define TKENUM1(name) TK_##name,
- #define TKENUM2(name, sym) TK_##name,
- TKDEF(TKENUM1, TKENUM2)
- #undef TKENUM1
- #undef TKENUM2
- TK_RESERVED = TK_while - TK_OFS
- };
- typedef int LexChar;
- typedef int LexToken;
- typedef struct BCInsLine {
- BCIns ins;
- BCLine line;
- } BCInsLine;
- typedef struct VarInfo {
- ktap_str_t *name;
- BCPos startpc;
- BCPos endpc;
- uint8_t slot;
- uint8_t info;
- } VarInfo;
- typedef struct LexState {
- struct FuncState *fs;
- ktap_val_t tokval;
- ktap_val_t lookaheadval;
- const char *p;
- const char *pe;
- LexChar c;
- LexToken tok;
- LexToken lookahead;
- SBuf sb;
- BCLine linenumber;
- BCLine lastline;
- ktap_str_t *chunkname;
- const char *chunkarg;
- const char *mode;
- VarInfo *vstack;
- int sizevstack;
- int vtop;
- BCInsLine *bcstack;
- int sizebcstack;
- uint32_t level;
- } LexState;
- int kp_lex_setup(LexState *ls, const char *str);
- void kp_lex_cleanup(LexState *ls);
- void kp_lex_next(LexState *ls);
- void kp_lex_read_string_until(LexState *ls, int c);
- LexToken kp_lex_lookahead(LexState *ls);
- const char *kp_lex_token2str(LexState *ls, LexToken tok);
- void kp_lex_error(LexState *ls, LexToken tok, ErrMsg em, ...);
- void kp_lex_init(void);
- #endif
One Level Up
Top Level