Updated type names from `core_*` to `scc_*` across lex_parser and stream modules to maintain naming consistency within the SCC codebase. This includes changes to function signatures and internal usage of types like `core_probe_stream_t`, `core_pos_t`, and `cstring_t` to their `scc_*` counterparts.
54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
/**
|
||
* @file lexer.h
|
||
* @brief C语言词法分析器核心数据结构与接口
|
||
*/
|
||
|
||
#ifndef __SCC_LEXER_H__
|
||
#define __SCC_LEXER_H__
|
||
|
||
#include "lexer_token.h"
|
||
#include <libcore.h>
|
||
|
||
typedef struct lexer_token {
|
||
scc_tok_type_t type;
|
||
scc_cvalue_t value;
|
||
scc_pos_t loc;
|
||
} lexer_tok_t;
|
||
|
||
/**
|
||
* @brief 词法分析器核心结构体
|
||
*
|
||
* 封装词法分析所需的状态信息和缓冲区管理
|
||
*/
|
||
typedef struct cc_lexer {
|
||
scc_probe_stream_t *stream;
|
||
scc_pos_t pos;
|
||
} scc_lexer_t;
|
||
|
||
/**
|
||
* @brief 初始化词法分析器
|
||
* @param[out] lexer 要初始化的词法分析器实例
|
||
* @param[in] stream 输入流对象指针
|
||
*/
|
||
void scc_lexer_init(scc_lexer_t *lexer, scc_probe_stream_t *stream);
|
||
|
||
/**
|
||
* @brief 获取原始token
|
||
* @param[in] lexer 词法分析器实例
|
||
* @param[out] token 输出token存储位置
|
||
*
|
||
* 此函数会返回所有类型的token,包括空白符等无效token
|
||
*/
|
||
void scc_lexer_get_token(scc_lexer_t *lexer, lexer_tok_t *token);
|
||
|
||
/**
|
||
* @brief 获取有效token
|
||
* @param[in] lexer 词法分析器实例
|
||
* @param[out] token 输出token存储位置
|
||
*
|
||
* 此函数会自动跳过空白符等无效token,返回对语法分析有意义的token
|
||
*/
|
||
void scc_lexer_get_valid_token(scc_lexer_t *lexer, lexer_tok_t *token);
|
||
|
||
#endif /* __SCC_LEXER_H__ */
|