Add char_type function to lexer.c but exclude it from build
This commit is contained in:
parent
fd8231b02d
commit
6c454fbb8e
@ -95,6 +95,9 @@ struct lexer_s {
|
|||||||
dstr_t *error_message;
|
dstr_t *error_message;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
INTERNAL lexer_input_t char_type(char input);
|
||||||
|
#endif
|
||||||
INTERNAL void stack_push(state_stack_t *stack, lexer_state_t value);
|
INTERNAL void stack_push(state_stack_t *stack, lexer_state_t value);
|
||||||
INTERNAL lexer_state_t stack_pop(state_stack_t *stack);
|
INTERNAL lexer_state_t stack_pop(state_stack_t *stack);
|
||||||
|
|
||||||
@ -298,6 +301,83 @@ void print_token(token_t token) {
|
|||||||
printf("}\n");
|
printf("}\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
INTERNAL lexer_input_t char_type(char input) {
|
||||||
|
if (isspace(input)) {
|
||||||
|
return LEXER_INPUT_WHITE_SPACE;
|
||||||
|
} else if (input >= '1' && input <= '9') {
|
||||||
|
return LEXER_INPUT_NON_ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (input) {
|
||||||
|
case '{':
|
||||||
|
return LEXER_INPUT_OPEN_BRACE;
|
||||||
|
case '}':
|
||||||
|
return LEXER_INPUT_CLOSE_BRACE;
|
||||||
|
case '[':
|
||||||
|
return LEXER_INPUT_OPEN_BRACKET;
|
||||||
|
case ']':
|
||||||
|
return LEXER_INPUT_CLOSE_BRACKET;
|
||||||
|
case ',':
|
||||||
|
return LEXER_INPUT_COMMA;
|
||||||
|
case ':':
|
||||||
|
return LEXER_INPUT_COLON;
|
||||||
|
case '"':
|
||||||
|
return LEXER_INPUT_DOUBLE_QUOTE;
|
||||||
|
case '\\':
|
||||||
|
return LEXER_INPUT_BACK_SLASH;
|
||||||
|
case '/':
|
||||||
|
return LEXER_INPUT_FORWARD_SLASH;
|
||||||
|
case 'a':
|
||||||
|
return LEXER_INPUT_LOWER_A;
|
||||||
|
case 'b':
|
||||||
|
return LEXER_INPUT_LOWER_B;
|
||||||
|
case 'c':
|
||||||
|
return LEXER_INPUT_LOWER_C;
|
||||||
|
case 'd':
|
||||||
|
return LEXER_INPUT_LOWER_D;
|
||||||
|
case 'e':
|
||||||
|
return LEXER_INPUT_LOWER_E;
|
||||||
|
case 'f':
|
||||||
|
return LEXER_INPUT_LOWER_F;
|
||||||
|
case 'l':
|
||||||
|
return LEXER_INPUT_LOWER_L;
|
||||||
|
case 'n':
|
||||||
|
return LEXER_INPUT_LOWER_N;
|
||||||
|
case 'r':
|
||||||
|
return LEXER_INPUT_LOWER_R;
|
||||||
|
case 's':
|
||||||
|
return LEXER_INPUT_LOWER_S;
|
||||||
|
case 't':
|
||||||
|
return LEXER_INPUT_LOWER_T;
|
||||||
|
case 'u':
|
||||||
|
return LEXER_INPUT_LOWER_U;
|
||||||
|
case 'A':
|
||||||
|
return LEXER_INPUT_UPPER_A;
|
||||||
|
case 'B':
|
||||||
|
return LEXER_INPUT_UPPER_B;
|
||||||
|
case 'C':
|
||||||
|
return LEXER_INPUT_UPPER_C;
|
||||||
|
case 'D':
|
||||||
|
return LEXER_INPUT_UPPER_D;
|
||||||
|
case 'E':
|
||||||
|
return LEXER_INPUT_UPPER_E;
|
||||||
|
case 'F':
|
||||||
|
return LEXER_INPUT_UPPER_F;
|
||||||
|
case '-':
|
||||||
|
return LEXER_INPUT_MINUS;
|
||||||
|
case '+':
|
||||||
|
return LEXER_INPUT_PLUS;
|
||||||
|
case '.':
|
||||||
|
return LEXER_INPUT_DECIMAL;
|
||||||
|
case '0':
|
||||||
|
return LEXER_INPUT_ZERO;
|
||||||
|
default:
|
||||||
|
return LEXER_INPUT_OTHER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void stack_push(state_stack_t *stack, lexer_state_t state) {
|
void stack_push(state_stack_t *stack, lexer_state_t state) {
|
||||||
if (stack->size + 1 >= MAX_STACK_CAPACITY) {
|
if (stack->size + 1 >= MAX_STACK_CAPACITY) {
|
||||||
return;
|
return;
|
||||||
@ -772,8 +852,6 @@ lexer_state_t handle_number(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return LEXER_STATE_FRACTION;
|
return LEXER_STATE_FRACTION;
|
||||||
} else if (input == '}' || input == ']') {
|
} else if (input == '}' || input == ']') {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -783,8 +861,6 @@ lexer_state_t handle_number(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return handle_collection_end(lexer, input);
|
return handle_collection_end(lexer, input);
|
||||||
} else if (input == ',') {
|
} else if (input == ',') {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -794,8 +870,6 @@ lexer_state_t handle_number(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return lexer->stack.stack[lexer->stack.size - 1];
|
return lexer->stack.stack[lexer->stack.size - 1];
|
||||||
} else if (isspace(input)) {
|
} else if (isspace(input)) {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -815,8 +889,6 @@ lexer_state_t handle_fraction(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return LEXER_STATE_FRACTION;
|
return LEXER_STATE_FRACTION;
|
||||||
} else if (input == '}' || input == ']') {
|
} else if (input == '}' || input == ']') {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -830,8 +902,6 @@ lexer_state_t handle_fraction(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return LEXER_STATE_EXPONENT;
|
return LEXER_STATE_EXPONENT;
|
||||||
} else if (input == ',') {
|
} else if (input == ',') {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -841,8 +911,6 @@ lexer_state_t handle_fraction(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return lexer->stack.stack[lexer->stack.size - 1];
|
return lexer->stack.stack[lexer->stack.size - 1];
|
||||||
} else if (isspace(input)) {
|
} else if (isspace(input)) {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -884,8 +952,6 @@ lexer_state_t handle_power(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return LEXER_STATE_POWER;
|
return LEXER_STATE_POWER;
|
||||||
} else if (input == '}' || input == ']') {
|
} else if (input == '}' || input == ']') {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -895,8 +961,6 @@ lexer_state_t handle_power(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return handle_collection_end(lexer, input);
|
return handle_collection_end(lexer, input);
|
||||||
} else if (input == ',') {
|
} else if (input == ',') {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -906,8 +970,6 @@ lexer_state_t handle_power(lexer_t *lexer, char input) {
|
|||||||
|
|
||||||
return lexer->stack.stack[lexer->stack.size - 1];
|
return lexer->stack.stack[lexer->stack.size - 1];
|
||||||
} else if (isspace(input)) {
|
} else if (isspace(input)) {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
@ -925,8 +987,6 @@ lexer_state_t handle_number_end(lexer_t *lexer, char input) {
|
|||||||
if (isspace(input)) {
|
if (isspace(input)) {
|
||||||
return LEXER_STATE_NUMBER_END;
|
return LEXER_STATE_NUMBER_END;
|
||||||
} else if (input == ',') {
|
} else if (input == ',') {
|
||||||
// TODO (Abdelrahman): Set the token type correctly based on whether the
|
|
||||||
// number is an integer or a double
|
|
||||||
lexer->token_ready = true;
|
lexer->token_ready = true;
|
||||||
u64 column = lexer->column - dstr_length(lexer->current_string);
|
u64 column = lexer->column - dstr_length(lexer->current_string);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user