#ifndef SPVM_TOKE_H
#define SPVM_TOKE_H
#include "spvm_typedecl.h"
enum
{
SPVM_TOKE_C_VAR_EXPANSION_STATE_NOT_STARTED,
SPVM_TOKE_C_VAR_EXPANSION_STATE_FIRST_STRING_CONCAT,
SPVM_TOKE_C_VAR_EXPANSION_STATE_VAR,
SPVM_TOKE_C_VAR_EXPANSION_STATE_SECOND_STRING_CONCAT,
SPVM_TOKE_C_VAR_EXPANSION_STATE_BEGIN_NEXT_STRING_LITERAL,
};
int
SPVM_yylex(SPVM_YYSTYPE* yylvalp, SPVM_COMPILER* compiler);
int32_t SPVM_TOKE_load_class_file(SPVM_COMPILER* compiler);
SPVM_OP* SPVM_TOKE_new_op(SPVM_COMPILER* compiler, int32_t type);
SPVM_OP* SPVM_TOKE_new_op_with_column(SPVM_COMPILER* compiler, int32_t type, int32_t column);
int32_t SPVM_TOKE_is_white_space(SPVM_COMPILER* compiler,
char
ch);
int32_t SPVM_TOKE_is_octal_number(SPVM_COMPILER* compiler,
char
ch);
int32_t SPVM_TOKE_is_hex_number(SPVM_COMPILER* compiler,
char
ch);
char
SPVM_TOKE_parse_hex_escape(SPVM_COMPILER* compiler,
char
** char_ptr_ptr);
char
SPVM_TOKE_parse_octal_escape(SPVM_COMPILER* compiler,
char
** char_ptr_ptr);
int32_t SPVM_TOKE_is_valid_utf8_code_point(int32_t code_point);
int32_t SPVM_TOKE_is_unicode_scalar_value(int32_t code_point);
int32_t SPVM_TOKE_convert_unicode_codepoint_to_utf8_character(int32_t uc, uint8_t* dst);
int32_t SPVM_TOKE_parse_line_terminator(SPVM_COMPILER* compiler,
char
** ch_ptr_ptr);
int32_t SPVM_TOKE_is_line_terminator(SPVM_COMPILER* compiler,
char
* ch);
void
SPVM_TOKE_increment_current_line(SPVM_COMPILER* compiler);
int32_t SPVM_TOKE_isalpha_ascii(SPVM_COMPILER* compiler, int32_t ch);
int32_t SPVM_TOKE_isalnum_ascii(SPVM_COMPILER* compiler, int32_t ch);
int32_t SPVM_TOKE_isdigit_ascii(SPVM_COMPILER* compiler, int32_t ch);
int32_t SPVM_TOKE_islower_ascii(SPVM_COMPILER* compiler, int32_t ch);
int32_t SPVM_TOKE_isspace_ascii(SPVM_COMPILER* compiler, int32_t ch);
int32_t SPVM_TOKE_isprint_ascii(SPVM_COMPILER* compiler, int32_t ch);
#endif