void accumulateValue (float* valuePtr, SyntaxErrorType errCode) { float value = *valuePtr; //-------------------------------------------- // Make sure the first character is a digit... if (calcCharCode(curChar) != CHR_DIGIT) { syntaxError(errCode); curToken = TKN_ERROR; return; } do { *tokenp = curChar; tokenp++; if (++digitCount <= MAX_DIGIT_COUNT) value = 10 * value + (curChar - '0'); else countError = true; getChar(); } while (calcCharCode(curChar) == CHR_DIGIT); *valuePtr = value; }
void getToken(void) { skipBlanks(); tokenp = tokenString; switch (calcCharCode(curChar)) { case CHR_LETTER: getWord(); break; case CHR_DIGIT: getNumber(); break; case CHR_DQUOTE: getString(); break; case CHR_EOF: curToken = TKN_EOF; break; default: getSpecial(); break; } if (blockFlag) crunchToken(); }
void getWord(void) { while ((calcCharCode(curChar) == CHR_LETTER) || (calcCharCode(curChar) == CHR_DIGIT) || (curChar == '_')) { *tokenp = curChar; tokenp++; getChar(); } *tokenp = nullptr; downShiftWord(); if (curChar == '.') { TokenCodeType endToken = TKN_END_MODULE; if (CurLibrary) endToken = TKN_END_LIBRARY; else if (CurModuleIdPtr->defn.info.routine.flags & ROUTINE_FLAG_FSM) endToken = TKN_END_FSM; //------------------------------------------------------------------- // If we have an "endmodule" string, stop. Otherwise, keep reading... if (strcmp(wordString, TokenStrings[endToken])) { *tokenp = curChar; tokenp++; getChar(); while ((calcCharCode(curChar) == CHR_LETTER) || (calcCharCode(curChar) == CHR_DIGIT) || (curChar == '_')) { *tokenp = curChar; tokenp++; getChar(); } *tokenp = nullptr; downShiftWord(); } } if (!isReservedWord()) curToken = TKN_IDENTIFIER; }