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); }
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]); } }