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_BaseNodecalcNode (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
 Переменные, которые при проверке на сайд-эффекты не учитываются
 

Подробное описание

Оптимизатор

Методы

◆ testBlock()

void s4g_Optimizer::testBlock ( s4g_BaseNode **  ppNode)
static

Выполняет проверки, связаные с блоком

Проверит блок на наличие новых переменных, если в блоке не создаются новые переменные, можно не создавать контекст Проверит блок на наличие неиспользуемых переменных, выдаст предупреждение, удалит обьявления

◆ testFor()

void s4g_Optimizer::testFor ( s4g_BaseNode **  ppNode)
static

Выполняет проверки цикла FOR.

Проверка возможности оптимизации цикла FOR.

◆ testIf()

void s4g_Optimizer::testIf ( s4g_BaseNode **  ppNode)
static

Выполняет проверку переходов условия

Проверка на константность выражения IF.


Объявления и описания членов классов находятся в файлах: