feat(argparse): 添加选择类型支持和错误处理优化
添加了 SCC_ARGPARSE_ERR_PNT_DEFAULT 错误类型用于默认操作处理, 实现了 scc_argparse_spec_setup_choices 函数支持枚举选择, 重构了错误处理流程使返回值更加一致。 修复了长选项名称匹配的逻辑错误。 feat(lexer): 添加换行符和注释符号的词法标记 新增 SCC_TOK_ENDLINE 和 SCC_TOK_SHARP 标记类型, 改进词法分析器对换行符和井号的识别处理。 feat(scc_core): 添加常用宏定义 添加 scc_min 和 scc_max 宏定义提供基础数值比较功能。 feat(main): 实现编译器主程序和命令行接口 创建主程序入口实现完整的编译流程, 集成预处理器、词法分析、语法分析和IR生成模块, 添加AST和IR输出功能支持调试查看中间表示。 chore(build): 配置项目构建依赖关系 创建 cbuild.toml 配置文件定义项目包信息和依赖库, 建立编译器各组件库之间的依赖关系管理。
This commit is contained in:
@@ -33,6 +33,7 @@ typedef enum scc_argparse_val_type {
|
||||
|
||||
typedef enum scc_argparse_err {
|
||||
SCC_ARGPARSE_ERR_NONE,
|
||||
SCC_ARGPARSE_ERR_PNT_DEFAULT,
|
||||
SCC_ARGPARSE_ERR_UNKNOWN_ERR,
|
||||
SCC_ARGPARSE_ERR_INVALID_ARG,
|
||||
SCC_ARGPARSE_ERR_INVALID_VALUE,
|
||||
@@ -206,6 +207,14 @@ static inline void scc_argparse_spec_setup_float(scc_argparse_spec_t *spec,
|
||||
spec->store.float_store = store;
|
||||
}
|
||||
|
||||
static inline void scc_argparse_spec_setup_choices(scc_argparse_spec_t *spec,
|
||||
const char **values,
|
||||
int count) {
|
||||
spec->value_type = SCC_ARGPARSE_VAL_TYPE_ENUM;
|
||||
spec->choices.values = values;
|
||||
spec->choices.count = count;
|
||||
}
|
||||
|
||||
#define SCC_ARGPARSE_MACRO_SETTER(attr) \
|
||||
static inline void scc_argparse_spec_set_##attr(scc_argparse_spec_t *spec, \
|
||||
cbool flag) { \
|
||||
|
||||
Reference in New Issue
Block a user