| | |
| | | token->type = SCPI_TOKEN_UNKNOWN; |
| | | } |
| | | |
| | | return token->len; |
| | | return token->len; |
| | | |
| | | |
| | | } |
| | | |
| | | /* 7.6.1 <COMMAND PROGRAM HEADER> */ |
| | |
| | | * @param token |
| | | * @return |
| | | */ |
| | | |
| | | /*识别和分类SCPI命令头 |
| | | 公共命令头 以*识别 如 *IDN? |
| | | 复合命令头 以:识别 如 SYSTem:ERRor? |
| | | 命令查询 以?识别 |
| | | 普通命令:MEAS:VOLT |
| | | 查询命令:MEAS:VOLT? |
| | | |
| | | @param state 词法解析器 |
| | | @param token 用于存储解析结果的token |
| | | @return 返回解析结果的长度 |
| | | |
| | | */ |
| | | int scpiLex_ProgramHeader(lex_state_t * state, scpi_token_t * token) { |
| | | |
| | | // 记录起始位置 并且初始化类型 |
| | | int res; |
| | | token->ptr = state->pos; |
| | | token->type = SCPI_TOKEN_UNKNOWN; |
| | | |
| | | res = skipCommonProgramHeader(state); |
| | | // 解析到公共命令头后检查查询符 |
| | | if (res >= SKIP_OK) { |
| | | if (skipChr(state, '?') >= SKIP_OK) { |
| | | token->type = SCPI_TOKEN_COMMON_QUERY_PROGRAM_HEADER; |
| | |
| | | } else if (res <= SKIP_INCOMPLETE) { |
| | | token->type = SCPI_TOKEN_INCOMPLETE_COMMON_PROGRAM_HEADER; |
| | | } else if (res == SKIP_NONE) { |
| | | |
| | | // 解析到复合命令后检查查询符 |
| | | res = skipCompoundProgramHeader(state); |
| | | |
| | | if (res >= SKIP_OK) { |
| | |
| | | token->type = SCPI_TOKEN_INCOMPLETE_COMPOUND_PROGRAM_HEADER; |
| | | } |
| | | } |
| | | |
| | | // 计算长度 |
| | | if (token->type != SCPI_TOKEN_UNKNOWN) { |
| | | token->len = state->pos - token->ptr; |
| | | } else { |