| | |
| | | } |
| | | } |
| | | |
| | | int lexIsEos(lex_state_t * state) { |
| | | int scpiLex_IsEos(lex_state_t * state) { |
| | | return iseos(state); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /* tokens */ |
| | | int lexWhiteSpace(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_WhiteSpace(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | skipWs(state); |
| | |
| | | } |
| | | } |
| | | |
| | | int lexProgramHeader(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_ProgramHeader(lex_state_t * state, scpi_token_t * token) { |
| | | int res; |
| | | token->ptr = state->pos; |
| | | token->type = TokUnknown; |
| | |
| | | } |
| | | |
| | | /* 7.7.1 <CHARACTER PROGRAM DATA> */ |
| | | int lexCharacterProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_CharacterProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | if (!iseos(state) && isalpha(state->pos[0])) { |
| | |
| | | return someNumbers; |
| | | } |
| | | |
| | | int lexDecimalNumericProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_DecimalNumericProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | const char * rollback; |
| | | token->ptr = state->pos; |
| | | |
| | |
| | | } |
| | | |
| | | /* 7.7.3 <SUFFIX PROGRAM DATA> */ |
| | | int lexSuffixProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_SuffixProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | skipChr(state, '/'); |
| | |
| | | return someNumbers; |
| | | } |
| | | |
| | | int lexNondecimalNumericData(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_NondecimalNumericData(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | int someNumbers = 0; |
| | | if (skipChr(state, '#')) { |
| | |
| | | skipQuoteProgramData(state, '\''); |
| | | } |
| | | |
| | | int lexStringProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_StringProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | if (!iseos(state)) { |
| | |
| | | return isdigit(c) && (c != '0'); |
| | | } |
| | | |
| | | int lexArbitraryBlockProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_ArbitraryBlockProgramData(lex_state_t * state, scpi_token_t * token) { |
| | | int i; |
| | | int j = 0; |
| | | const char * ptr = state->pos; |
| | |
| | | |
| | | // TODO: 7.7.7.2-2 recursive - any program data |
| | | |
| | | int lexProgramExpression(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_ProgramExpression(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | if (!iseos(state) && ischr(state, '(')) { |
| | |
| | | return token->len; |
| | | } |
| | | |
| | | int lexComma(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_Comma(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | if (skipChr(state, ',')) { |
| | |
| | | return token->len; |
| | | } |
| | | |
| | | int lexSemicolon(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_Semicolon(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | if (skipChr(state, ';')) { |
| | |
| | | return token->len; |
| | | } |
| | | |
| | | int lexNewLine(lex_state_t * state, scpi_token_t * token) { |
| | | int scpiLex_NewLine(lex_state_t * state, scpi_token_t * token) { |
| | | token->ptr = state->pos; |
| | | |
| | | skipChr(state, '\r'); |