Ejemplo n.º 1
0
void globlex_Init(void)
{
	uint32_t id;

	g_bDontExpandStrings = false;

	lex_Init();

	lex_AddStrings(staticstrings);

	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_8BIT)
		lex_AddString("__RSB", T_POP_RB);
	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_16BIT)
		lex_AddString("__RSW", T_POP_RW);
	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_32BIT)
		lex_AddString("__RSL", T_POP_RL);
	
	if(g_pConfiguration->pszNameRB && g_pConfiguration->eMinimumWordSize <= MINSIZE_8BIT)
		lex_AddString(g_pConfiguration->pszNameRB, T_POP_RB);
	if(g_pConfiguration->pszNameRW && g_pConfiguration->eMinimumWordSize <= MINSIZE_16BIT)
		lex_AddString(g_pConfiguration->pszNameRW, T_POP_RW);
	if(g_pConfiguration->pszNameRL && g_pConfiguration->eMinimumWordSize <= MINSIZE_32BIT)
		lex_AddString(g_pConfiguration->pszNameRL, T_POP_RL);

	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_8BIT)
		lex_AddString("__DSB", T_POP_DSB);
	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_16BIT)
		lex_AddString("__DSW", T_POP_DSW);
	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_32BIT)
		lex_AddString("__DSL", T_POP_DSL);
	
	if(g_pConfiguration->pszNameDSB && g_pConfiguration->eMinimumWordSize <= MINSIZE_8BIT)
		lex_AddString(g_pConfiguration->pszNameDSB, T_POP_DSB);
	if(g_pConfiguration->pszNameDSW && g_pConfiguration->eMinimumWordSize <= MINSIZE_16BIT)
		lex_AddString(g_pConfiguration->pszNameDSW, T_POP_DSW);
	if(g_pConfiguration->pszNameDSL && g_pConfiguration->eMinimumWordSize <= MINSIZE_32BIT)
		lex_AddString(g_pConfiguration->pszNameDSL, T_POP_DSL);

	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_8BIT)
		lex_AddString("__DCB", T_POP_DB);
	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_16BIT)
		lex_AddString("__DCW", T_POP_DW);
	if(g_pConfiguration->eMinimumWordSize <= MINSIZE_32BIT)
		lex_AddString("__DCL", T_POP_DL);
	
	if(g_pConfiguration->pszNameDB && g_pConfiguration->eMinimumWordSize <= MINSIZE_8BIT)
		lex_AddString(g_pConfiguration->pszNameDB, T_POP_DB);
	if(g_pConfiguration->pszNameDW && g_pConfiguration->eMinimumWordSize <= MINSIZE_16BIT)
		lex_AddString(g_pConfiguration->pszNameDW, T_POP_DW);
	if(g_pConfiguration->pszNameDL && g_pConfiguration->eMinimumWordSize <= MINSIZE_32BIT)
		lex_AddString(g_pConfiguration->pszNameDL, T_POP_DL);

	if(g_pConfiguration->bSupportBanks)
		lex_AddString("bank", T_FUNC_BANK);

	/* Local ID */

    id = lex_FloatAlloc(&s_sIDToken);
    lex_FloatAddRange(id, '.', '.', 1);
    lex_FloatAddRange(id, 'a', 'z', 2);
    lex_FloatAddRange(id, 'A', 'Z', 2);
    lex_FloatAddRange(id, '_', '_', 2);
    lex_FloatAddRange(id, '#', '#', 2);
    lex_FloatAddRange(id, '\\', '\\', 2);
    lex_FloatAddRangeAndBeyond(id, 'a', 'z', 3);
    lex_FloatAddRangeAndBeyond(id, 'A', 'Z', 3);
    lex_FloatAddRangeAndBeyond(id, '0', '9', 3);
    lex_FloatAddRangeAndBeyond(id, '_', '_', 3);
    lex_FloatAddRangeAndBeyond(id, '\\', '\\', 3);
    lex_FloatAddRangeAndBeyond(id, '@', '@', 3);
    lex_FloatAddRangeAndBeyond(id, '#', '#', 3);

    id = lex_FloatAlloc(&s_sIDToken);
    lex_FloatAddRangeAndBeyond(id, '0', '9', 1);
    lex_FloatAddRangeAndBeyond(id, '\\', '\\', 1);
    lex_FloatAddRangeAndBeyond(id, '@', '@', 2);
	lex_FloatSetSuffix(id, '$');

    /* Macro arguments */

    id = lex_FloatAlloc(&s_sMacroArgToken);
    lex_FloatAddRange(id, '\\', '\\', 1);
    lex_FloatAddRange(id, '0', '9', 2);
    id = lex_FloatAlloc(&s_sMacroUniqueToken);
    lex_FloatAddRange(id, '\\', '\\', 1);
    lex_FloatAddRange(id, '@', '@', 2);

	/* Decimal constants */

    id = lex_FloatAlloc(&s_sDecimal);
    lex_FloatAddRange(id, '0', '9', 1);
    lex_FloatAddRangeAndBeyond(id, '0', '9', 2);
    lex_FloatAddRangeAndBeyond(id, '.', '.', 2);

	/* Hex constants*/

    id = lex_FloatAlloc(&s_sNumberToken);
    lex_FloatAddRange(id, '$', '$', 1);
    lex_FloatAddRangeAndBeyond(id, '0', '9', 2);
    lex_FloatAddRangeAndBeyond(id, 'A', 'F', 2);
    lex_FloatAddRangeAndBeyond(id, 'a', 'f', 2);

	/*      Binary constants*/

    BinaryConstID = id = lex_FloatAlloc(&s_sNumberToken);
    lex_FloatAddRange(id, '%', '%', 1);
    lex_FloatAddRangeAndBeyond(id, '0', '1', 2);

    /* ID's */

    id = lex_FloatAlloc(&s_sIDToken);
    lex_FloatAddRange(id, 'a', 'z', 1);
    lex_FloatAddRange(id, 'A', 'Z', 1);
    lex_FloatAddRange(id, '_', '_', 1);
    lex_FloatAddRange(id, '@', '@', 1);
    lex_FloatAddRange(id, '\\', '\\', 1);
    lex_FloatAddRangeAndBeyond(id, 'a', 'z', 2);
    lex_FloatAddRangeAndBeyond(id, 'A', 'Z', 2);
    lex_FloatAddRangeAndBeyond(id, '0', '9', 2);
    lex_FloatAddRangeAndBeyond(id, '_', '_', 2);
    lex_FloatAddRangeAndBeyond(id, '\\', '\\', 2);
    lex_FloatAddRangeAndBeyond(id, '@', '@', 2);
    lex_FloatAddRangeAndBeyond(id, '#', '#', 2);
}
Ejemplo n.º 2
0
void opt_SetCurrentOptions(struct sOptions *pOpt)
{
	if (nGBGfxID != -1) {
		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[0],
				     CurrentOptions.gbgfx[0]);
		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[1],
				     CurrentOptions.gbgfx[1]);
		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[2],
				     CurrentOptions.gbgfx[2]);
		lex_FloatDeleteRange(nGBGfxID, CurrentOptions.gbgfx[3],
				     CurrentOptions.gbgfx[3]);
		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[0],
					   CurrentOptions.gbgfx[0]);
		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[1],
					   CurrentOptions.gbgfx[1]);
		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[2],
					   CurrentOptions.gbgfx[2]);
		lex_FloatDeleteSecondRange(nGBGfxID, CurrentOptions.gbgfx[3],
					   CurrentOptions.gbgfx[3]);
	}

	if (nBinaryID != -1) {
		lex_FloatDeleteRange(nBinaryID, CurrentOptions.binary[0],
				     CurrentOptions.binary[0]);
		lex_FloatDeleteRange(nBinaryID, CurrentOptions.binary[1],
				     CurrentOptions.binary[1]);
		lex_FloatDeleteSecondRange(nBinaryID, CurrentOptions.binary[0],
					   CurrentOptions.binary[0]);
		lex_FloatDeleteSecondRange(nBinaryID, CurrentOptions.binary[1],
					   CurrentOptions.binary[1]);
	}

	CurrentOptions = *pOpt;

	if (nGBGfxID != -1) {
		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[0],
				  CurrentOptions.gbgfx[0]);
		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[1],
				  CurrentOptions.gbgfx[1]);
		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[2],
				  CurrentOptions.gbgfx[2]);
		lex_FloatAddRange(nGBGfxID, CurrentOptions.gbgfx[3],
				  CurrentOptions.gbgfx[3]);
		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[0],
					CurrentOptions.gbgfx[0]);
		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[1],
					CurrentOptions.gbgfx[1]);
		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[2],
					CurrentOptions.gbgfx[2]);
		lex_FloatAddSecondRange(nGBGfxID, CurrentOptions.gbgfx[3],
					CurrentOptions.gbgfx[3]);
	}

	if (nBinaryID != -1) {
		lex_FloatAddRange(nBinaryID, CurrentOptions.binary[0],
				  CurrentOptions.binary[0]);
		lex_FloatAddRange(nBinaryID, CurrentOptions.binary[1],
				  CurrentOptions.binary[1]);
		lex_FloatAddSecondRange(nBinaryID, CurrentOptions.binary[0],
					CurrentOptions.binary[0]);
		lex_FloatAddSecondRange(nBinaryID, CurrentOptions.binary[1],
					CurrentOptions.binary[1]);
	}

}