- 将依赖项从libcore重命名为scc_core - 更新头文件包含路径从<libcore.h>到<scc_core.h> - 保持原有功能不变 refactor(lexer): 重命名libcore为scc_core并添加词法流式解析功能 - 将依赖项从libcore重命名为scc_core - 移除不再需要的scc_lexer_token结构体定义 - 重命名struct cc_lexer为struct scc_lexer - 添加scc_lexer_stream_t流式解析器相关定义和实现 - 新增lexer_stream.c文件实现流式token缓冲功能 refactor(lexer_log): 重命名logger变量和头文件定义 - 将头文件保护宏从__SMCC_LEXER_LOG_H__改为__SCC_LEXER_LOG_H__ - 将logger变量从__smcc_lexer_log改为__scc_lexer_log - 更新头文件包含从<libcore.h>到<scc_core.h> refactor(lexer_token): 重新组织token头文件结构 - 将头文件保护宏从__SMCC_CC_TOKEN_H__改为__SCC_LEXER_TOKEN_H__ - 更新头文件包含从<libcore.h>到<scc_core.h> - 将scc_lexer_token结构体定义移至该文件 refactor(lexer): 简化token匹配代码格式 - 移除LCC相关的注释内容 - 优化括号符号的token匹配代码格式,使用clang-format控制 refactor(pprocessor): 更新依赖项名称和头文件包含 - 将libcore重命名为scc_core - 将libutils重命名为scc_utils - 更新头文件包含路径 refactor(runtime): 重命名libcore为scc_core并重构目录结构 - 将libcore目录重命名为scc_core - 将libutils目录重命名为scc_utils - 更新所有相关的头文件包含路径 - 修改cbuild.toml中的包名称 - 更新core_vec.h中的宏定义以支持标准库模式
33 lines
1.2 KiB
C
33 lines
1.2 KiB
C
#ifndef __SCC_LEX_PARSER_H__
|
|
#define __SCC_LEX_PARSER_H__
|
|
|
|
#include <scc_core.h>
|
|
|
|
static inline cbool scc_lex_parse_is_endline(int ch) {
|
|
return ch == '\n' || ch == '\r';
|
|
}
|
|
|
|
static inline cbool scc_lex_parse_is_whitespace(int ch) {
|
|
return ch == ' ' || ch == '\t';
|
|
}
|
|
|
|
// TODO identifier check is right?
|
|
static inline cbool scc_lex_parse_is_identifier_prefix(int ch) {
|
|
return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == '_';
|
|
}
|
|
|
|
int scc_lex_parse_char(scc_probe_stream_t *input, scc_pos_t *pos);
|
|
cbool scc_lex_parse_string(scc_probe_stream_t *input, scc_pos_t *pos,
|
|
scc_cstring_t *output);
|
|
cbool scc_lex_parse_number(scc_probe_stream_t *input, scc_pos_t *pos,
|
|
usize *output);
|
|
cbool scc_lex_parse_identifier(scc_probe_stream_t *input, scc_pos_t *pos,
|
|
scc_cstring_t *output);
|
|
void scc_lex_parse_skip_endline(scc_probe_stream_t *input, scc_pos_t *pos);
|
|
void scc_lex_parse_skip_block_comment(scc_probe_stream_t *input,
|
|
scc_pos_t *pos);
|
|
void scc_lex_parse_skip_line(scc_probe_stream_t *input, scc_pos_t *pos);
|
|
void scc_lex_parse_skip_whitespace(scc_probe_stream_t *input, scc_pos_t *pos);
|
|
|
|
#endif /* __SCC_LEX_PARSER_H__ */
|