Пример #1
0
//---------------------------------------------------------
bool CBSL_Interpreter::Parse_Vars(bool bFlag)
{
	InputText.clear();

	CSG_String	s(m_BSL);

	while( s.Length() > 0 )
	{
		InputText.push_back(s.BeforeFirst('\n').b_str());

		s	= s.AfterFirst('\n');
	}

	InputText.push_back("\t\n\n");

	//-----------------------------------------------------
	try
	{
		int		zeile	= 0;
		int		p		= 0;
		isSyntaxCheck	= true;

		ParseVars		(zeile, p);
		AddMatrixPointVariables(bFlag);
		pars_ausdruck	(zeile, p);

		return( true );
	}
	catch (BBFehlerException)
	{
		Message_Add(CSG_String::Format(SG_T("error in line %d: %s\n"), FehlerZeile, CSG_String(FehlerString.c_str()).c_str()));

		DeleteVarList();
		DeleteAnweisungList(AnweisungList);

		return( false );
	}
}
Пример #2
0
//---------------------------------------------------------
bool CBSL_Interpreter::On_Execute(void)
{
	//-----------------------------------------------------
	Parameters("OUTPUT")->asGridList()->Del_Items();

	g_bProgress	= Parameters("PROGRESS")->asBool();

	if( m_bFile )
	{
		CSG_File	Stream;
		
		if( !Stream.Open(Parameters("BSL")->asString(), SG_FILE_R, false) )
		{
			return( false );
		}

		Stream.Read(m_BSL, Stream.Length());
	}
	else
	{
		m_BSL	= Parameters("BSL")->asString();
	}

	//-----------------------------------------------------
	if( !Parse_Vars(false) )
	{
		return( false );
	}

	//-----------------------------------------------------
	CSG_Parameters	Input(this, _TL("Input"), _TL(""), SG_T("INPUT"), true);

	FindMemoryGrids();

	for(T_InputText::iterator it=InputGrids.begin(); it!=InputGrids.end(); it++)
	{
		CSG_String	sName(it->c_str());

		Input.Add_Grid(NULL, sName, sName, _TL(""), PARAMETER_INPUT, true);
	}

	DeleteVarList();
	DeleteAnweisungList(AnweisungList);

	if( Dlg_Parameters(&Input, _TL("Input")) == false )
	{
		return( false );
	}

	//-----------------------------------------------------
	if( !Parse_Vars(true) )
	{
		return( false );
	}

	//-----------------------------------------------------
	g_pInterpreter	= this;

	if( GetMemoryGrids(&Input) )
	{
		try
		{
			ausfuehren_anweisung(AnweisungList);
		}
		catch(BBFehlerAusfuehren x)
		{
			if( x.Text == "" )
				Message_Add(_TL("unknown error: execution"));
			else
				Message_Add(CSG_String::Format(SG_T("error: %s\n"), CSG_String(x.Text.c_str()).c_str()));
		}
		catch(BBFehlerUserbreak x)
		{
			if( x.Text == "" )
				Message_Add(_TL("unknown error: user break"));
			else
				Message_Add(CSG_String::Format(SG_T("error: %s\n"), CSG_String(x.Text.c_str()).c_str()));
		}
	}

	g_pInterpreter	= NULL;

	DeleteVarList();
	DeleteAnweisungList(AnweisungList);

	return( true );
}
Пример #3
0
void DestroyVarTable(EEVarTable* table){
	int i = 0;
	for(; i < HASH_TABLE_SIZE; ++i){
		DeleteVarList(&table->table[i]);
	}
}