JavaScript-QuickJS
view release on metacpan or search on metacpan
quickjs/quickjs.c view on Meta::CPAN
TOK_ERROR,
TOK_PRIVATE_NAME,
TOK_EOF,
/* keywords: WARNING: same order as atoms */
TOK_NULL, /* must be first */
TOK_FALSE,
TOK_TRUE,
TOK_IF,
TOK_ELSE,
TOK_RETURN,
TOK_VAR,
TOK_THIS,
TOK_DELETE,
TOK_VOID,
TOK_TYPEOF,
TOK_NEW,
TOK_IN,
TOK_INSTANCEOF,
TOK_DO,
TOK_WHILE,
TOK_FOR,
TOK_BREAK,
TOK_CONTINUE,
TOK_SWITCH,
TOK_CASE,
TOK_DEFAULT,
TOK_THROW,
TOK_TRY,
TOK_CATCH,
TOK_FINALLY,
TOK_FUNCTION,
TOK_DEBUGGER,
TOK_WITH,
/* FutureReservedWord */
TOK_CLASS,
TOK_CONST,
TOK_ENUM,
TOK_EXPORT,
TOK_EXTENDS,
TOK_IMPORT,
TOK_SUPER,
/* FutureReservedWords when parsing strict mode code */
TOK_IMPLEMENTS,
TOK_INTERFACE,
TOK_LET,
TOK_PACKAGE,
TOK_PRIVATE,
TOK_PROTECTED,
TOK_PUBLIC,
TOK_STATIC,
TOK_YIELD,
TOK_AWAIT, /* must be last */
TOK_OF, /* only used for js_parse_skip_parens_token() */
};
#define TOK_FIRST_KEYWORD TOK_NULL
#define TOK_LAST_KEYWORD TOK_AWAIT
/* unicode code points */
#define CP_NBSP 0x00a0
#define CP_BOM 0xfeff
#define CP_LS 0x2028
#define CP_PS 0x2029
typedef struct BlockEnv {
struct BlockEnv *prev;
JSAtom label_name; /* JS_ATOM_NULL if none */
int label_break; /* -1 if none */
int label_cont; /* -1 if none */
int drop_count; /* number of stack elements to drop */
int label_finally; /* -1 if none */
int scope_level;
int has_iterator;
} BlockEnv;
typedef struct JSGlobalVar {
int cpool_idx; /* if >= 0, index in the constant pool for hoisted
function defintion*/
uint8_t force_init : 1; /* force initialization to undefined */
uint8_t is_lexical : 1; /* global let/const definition */
uint8_t is_const : 1; /* const definition */
int scope_level; /* scope of definition */
JSAtom var_name; /* variable name */
} JSGlobalVar;
typedef struct RelocEntry {
struct RelocEntry *next;
uint32_t addr; /* address to patch */
int size; /* address size: 1, 2 or 4 bytes */
} RelocEntry;
typedef struct JumpSlot {
int op;
int size;
int pos;
int label;
} JumpSlot;
typedef struct LabelSlot {
int ref_count;
int pos; /* phase 1 address, -1 means not resolved yet */
int pos2; /* phase 2 address, -1 means not resolved yet */
int addr; /* phase 3 address, -1 means not resolved yet */
RelocEntry *first_reloc;
} LabelSlot;
typedef struct LineNumberSlot {
uint32_t pc;
int line_num;
} LineNumberSlot;
typedef enum JSParseFunctionEnum {
JS_PARSE_FUNC_STATEMENT,
JS_PARSE_FUNC_VAR,
JS_PARSE_FUNC_EXPR,
JS_PARSE_FUNC_ARROW,
JS_PARSE_FUNC_GETTER,
JS_PARSE_FUNC_SETTER,
JS_PARSE_FUNC_METHOD,
JS_PARSE_FUNC_CLASS_STATIC_INIT,
( run in 1.360 second using v1.01-cache-2.11-cpan-4991d5b9bd9 )