27 #ifndef s4g_optimizer_h 28 #define s4g_optimizer_h 64 static void warning(
s4g_BaseNode *pNode,
const char *szMsg);
66 static int m_iUpdates;
70 static bool m_bExprHasSideEffects;
Заголовочный файл синтаксического анализатора
базовый класс нода АСТ
Definition: s4g_parse.h:568
Оптимизатор
Definition: s4g_optimizer.h:34
static void testTable(s4g_BaseNode **ppNode)
Выполняет проверку таблиц
Definition: s4g_optimizer.cpp:140
static void testStmt(s4g_BaseNode **ppNode)
Выполняет проверки инструкций
Definition: s4g_optimizer.cpp:216
static s4g_Stack< const char * > m_stSafeVars
Переменные, которые при проверке на сайд-эффекты не учитываются
Definition: s4g_optimizer.h:73
static s4g_BaseNode * calcNode(s4g_BaseNode *pNode)
Выполняет вычисление поддерева AST.
Definition: s4g_optimizer.cpp:438
Стек, а точнее простой динамический массив с элементами стека
Definition: s4g_stack.h:22
S4G_NODE_TYPE
типы нодов
Definition: s4g_parse.h:357
static void testFor(s4g_BaseNode **ppNode)
Выполняет проверки цикла FOR.
Definition: s4g_optimizer.cpp:157
static void testIf(s4g_BaseNode **ppNode)
Выполняет проверку переходов условия
Definition: s4g_optimizer.cpp:98
static bool isConstNode(S4G_NODE_TYPE node_type)
Является ли нода константной
Definition: s4g_optimizer.cpp:427
static bool checkForSideEffectsCallback(s4g_BaseNode **ppNode)
Проверит выражение на наличие сайд-эффектов(вызовы функций, неявные изменения переменных ...
Definition: s4g_optimizer.cpp:240
static void testBlock(s4g_BaseNode **ppNode)
Выполняет проверки, связаные с блоком
Definition: s4g_optimizer.cpp:279
основа взаимодествия
Definition: s4g_main.h:45
static void optimize(s4g_Main *ps4gm)
Выполняет оптимизацию всего AST.
Definition: s4g_optimizer.cpp:19