Example #1
0
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;
}
Example #2
0
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();
}
Example #3
0
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;
}