s4g
0.9.2
высокоуровневый, императивный, процедурный, встраиваемый, скриптовый язык программирования общего назначения, написанный на C++.
|
Оптимизатор Подробнее...
#include <s4g_optimizer.h>
Открытые статические члены | |
static void | optimize (s4g_Main *ps4gm) |
Выполняет оптимизацию всего AST. | |
static bool | isConstNode (S4G_NODE_TYPE node_type) |
Является ли нода константной | |
static s4g_BaseNode * | calcNode (s4g_BaseNode *pNode) |
Выполняет вычисление поддерева AST. | |
static void | testBlock (s4g_BaseNode **ppNode) |
Выполняет проверки, связаные с блоком Подробнее... | |
static void | testStmt (s4g_BaseNode **ppNode) |
Выполняет проверки инструкций | |
static void | testFor (s4g_BaseNode **ppNode) |
Выполняет проверки цикла FOR. Подробнее... | |
static void | testIf (s4g_BaseNode **ppNode) |
Выполняет проверку переходов условия Подробнее... | |
static void | testTable (s4g_BaseNode **ppNode) |
Выполняет проверку таблиц | |
static bool | checkForSideEffectsCallback (s4g_BaseNode **ppNode) |
Проверит выражение на наличие сайд-эффектов(вызовы функций, неявные изменения переменных | |
Статические защищенные данные | |
static s4g_Stack< const char * > | m_stSafeVars |
Переменные, которые при проверке на сайд-эффекты не учитываются | |
Оптимизатор
|
static |
Выполняет проверки, связаные с блоком
Проверит блок на наличие новых переменных, если в блоке не создаются новые переменные, можно не создавать контекст Проверит блок на наличие неиспользуемых переменных, выдаст предупреждение, удалит обьявления
|
static |
Выполняет проверки цикла FOR.
Проверка возможности оптимизации цикла FOR.
|
static |
Выполняет проверку переходов условия
Проверка на константность выражения IF.