//CString CParser::ParseProcedureScope()
void CParser::ParseProcedureScope()
{	
	int nTabs = 5;
	// dont' need to read token because we have read 1st token	
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) + 
		"ParseProcedureScope " + sToken + "\r\n";
	if(sToken == "Public" || sToken == "Private")
	{
		m_oToken.GetNextToken();
		return;
	}

	if(IsProcedureStatic(sToken) == false && IsProcedureType(sToken) == false)
	{
		//m_sErrors = m_sErrors + "Error in file "+ m_sFile + 
		//		"\'s parsing procedure scope\r\n";
		m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString();// + "\r\n";

		m_oToken.GetNextToken();

		//mdlg.DoModal();
	}

	//return "Error in parsing procedure scope";
}
Пример #2
0
std::pair< AString, AString > cWebPlugin::GetTabNameForRequest(const HTTPRequest * a_Request)
{
	std::pair< AString, AString > Names;
	AStringVector Split = StringSplit(a_Request->Path, "/");

	if( Split.size() > 1 )
	{
		sWebPluginTab* Tab = 0;
		if( Split.size() > 2 )	// If we got the tab name, show that page
		{
			for( TabList::iterator itr = GetTabs().begin(); itr != GetTabs().end(); ++itr )
			{
				if( (*itr)->SafeTitle.compare( Split[2] ) == 0 ) // This is the one! Rawr
				{
					Tab = *itr;
					break;
				}
			}
		}
		else	// Otherwise show the first tab
		{
			if( GetTabs().size() > 0 )
				Tab = *GetTabs().begin();
		}

		if( Tab )
		{
			Names.first = Tab->Title;
			Names.second = Tab->SafeTitle;
		}
	}

	return Names;
}
void CParser::ParseProcedureEndBracket()
{
	int nTabs = 5;
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) + 
		"ParseProcedureEndBracket " + sToken + "\r\n";
	if(sToken != ")")
		m_sProgress = m_sProgress + GetTabs(nTabs+1) + GetErrorString();

	m_oToken.GetNextToken();
}
Пример #4
0
AString cPlugin_NewLua::HandleWebRequest(const HTTPRequest * a_Request )
{
	cCSLock Lock(m_CriticalSection);
	std::string RetVal = "";

	std::pair< std::string, std::string > TabName = GetTabNameForRequest(a_Request);
	std::string SafeTabName = TabName.second;
	if( SafeTabName.empty() )
		return "";

	sWebPluginTab* Tab = 0;
	for( TabList::iterator itr = GetTabs().begin(); itr != GetTabs().end(); ++itr )
	{
		if( (*itr)->SafeTitle.compare( SafeTabName ) == 0 ) // This is the one! Rawr
		{
			Tab = *itr;
			break;
		}
	}

	if( Tab )
	{
		//LOGINFO("1. Stack size: %i", lua_gettop(m_LuaState) );
		lua_rawgeti( m_LuaState, LUA_REGISTRYINDEX, Tab->UserData); // same as lua_getref()

		//LOGINFO("2. Stack size: %i", lua_gettop(m_LuaState) );
		// Push HTTPRequest
		tolua_pushusertype( m_LuaState, (void*)a_Request, "const HTTPRequest" );
		//LOGINFO("Calling bound function! :D");
		int s = lua_pcall( m_LuaState, 1, 1, 0);

		if ( s != 0 )
		{
			std::string err = lua_tostring(m_LuaState, -1);
			LOGERROR("-- %s", err.c_str() );
			lua_pop(m_LuaState, 1);
			LOGINFO("error. Stack size: %i", lua_gettop(m_LuaState) );
			return err;	// Show the error message in the web page, looks cool
		}

		if( !lua_isstring( m_LuaState, -1 ) )
		{
			LOGWARN("WARNING: WebPlugin tab '%s' did not return a string!", Tab->Title.c_str() );
			lua_pop(m_LuaState, 1); // Pop return value
			return std::string("WARNING: WebPlugin tab '") + Tab->Title + std::string("' did not return a string!");
		}

		RetVal += tolua_tostring(m_LuaState, -1, 0);
		lua_pop(m_LuaState, 1); // Pop return value
		//LOGINFO("ok. Stack size: %i", lua_gettop(m_LuaState) );
	}

	return RetVal;
}
void CParser::ParseProcedurePropertyType()
{
	int nTabs = 6;
	CString sToken = m_oToken.GetCurrentToken();

	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseProcedurePropertyType " + sToken + "\r\n";

	if(sToken != "Get" && sToken != "Let" )	
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ GetErrorString(); // + "\r\n";		
}
void CParser::ParseStatementWend(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseStatementWend " + sToken + "\r\n";

	if(sToken != "Wend")
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ GetErrorString();

	m_oToken.GetNextToken();
}
void CParser::ParseAsKeyword(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) + 
		"ParseAsKeyword " + sToken + "\r\n";

	if(sToken != "As")
		m_sProgress = m_sProgress + GetTabs(nTabs+1) +
			GetErrorString();
		
	m_oToken.GetNextToken();
}
Пример #8
0
std::list<std::pair<AString, AString> > cWebPlugin::GetTabNames(void)
{
	std::list< std::pair< AString, AString > > NameList;
	for( TabList::iterator itr = GetTabs().begin(); itr != GetTabs().end(); ++itr )
	{
		std::pair< AString, AString > StringPair;
		StringPair.first = (*itr)->Title;
		StringPair.second = (*itr)->SafeTitle;
		NameList.push_back( StringPair );
	}
	return NameList;
}
void CParser::ParseStatementMsgBoxPrompt(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseStatemenMsgBoxPrompt " + sToken + "\r\n";

	ETokenType tt = m_oToken.GetCurrentTokenType();
	if(tt != ttString && tt != ttNames)
	{
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ GetErrorString();
	}
	m_oToken.GetNextToken();
}
void CParser::ParseString(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseString" + sToken + "\r\n";

	ETokenType tt = m_oToken.GetCurrentTokenType();
	if(tt != ttString)
	{
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ GetErrorString();
	}

	m_oToken.GetNextToken();
}
void CParser::ParseID(int nTabs)
{	
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) + 
		"ParseID " + sToken + "\r\n";
	//ETokenType tt = m_oToken.GetCurrentTokenType();
	//CString stt = m_oToken.GetCurrentTokenTypeInString();
	if(IsID() == false)
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ GetErrorString();
	//if(tt != ttFunction)		
	//else
		//m_sProgress = m_sProgress + "\t\t\t\t\tNOT function\r\n";
	m_oToken.GetNextToken();
}
void CParser::ParseCondition(int nTabs)
{	
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseCondition\r\n";

	ETokenType tt = m_oToken.GetCurrentTokenType();
	if(tt == ttNumber)
		ParseNumber(nTabs+1);
	else if(tt == ttString)
		ParseString(nTabs+1);
	else if(tt == ttNames)
		ParseID(nTabs+1);

	CString sToken = m_oToken.GetCurrentToken();
	if(sToken != "Then")
	{
		//parse conditional operators i,e < > == != etc
		ParseConditionalOperator(nTabs+1);


		//parse number/string/id
		ETokenType tt = m_oToken.GetCurrentTokenType();
		if(tt == ttNumber)
			ParseNumber(nTabs+1);
		else if(tt == ttString)
			ParseString(nTabs+1);
		else if(tt == ttNames)
			ParseID(nTabs+1);
	}
}
Пример #13
0
DockableCtrl* AutoHideBar::GetChild(int position)
{
    int i = Find(position);
    if(i >= 0 && i < this->GetTabs().GetCount())
        return GetTabs().At(i).dock;
    return NULL;
}
Пример #14
0
//------------------------------------------------------------
void SnipWiz::OnMenuExpandSwitch(wxCommandEvent& e)
{
    IEditor* editor = GetEditor();
    if(!editor) return;

    bool isSelection = false;
    wxString var = editor->GetSelection();
    if(!var.IsEmpty()) isSelection = true;
    var = ::wxGetTextFromUser(_("Enter identifier name"), _("switch(...)"), var);
    if(var.IsEmpty()) return;
    long count = ::wxGetNumberFromUser(_("Enter number of cases"), _("Cases:"), _("switch(...)"), 1, 1, 20);
    if(count < 1) return;

    int curEol = editor->GetEOL();
    int curPos = editor->GetCurrentPosition();
    wxString tabs = GetTabs(editor, curPos);

    wxString output = wxString::Format(wxT("switch( %s )%s%s{%s"), var.c_str(), eol[curEol].c_str(), tabs.c_str(),
                                       eol[curEol].c_str());
    for(long i = 0; i < count; i++)
        output += wxString::Format(wxT("%scase :%s%sbreak;%s"), tabs.c_str(), eol[curEol].c_str(), tabs.c_str(),
                                   eol[curEol].c_str());

    output += tabs.c_str();
    output += wxT("}");
    if(isSelection)
        editor->ReplaceSelection(output);
    else
        editor->InsertText(curPos, output);
}
//CString CParser::ParseFile(CString sFile)
void CParser::ParseFile()
{
	m_sProgress = m_sProgress + GetTabs(1) + "ParseFile " 
		+ m_sFile + "\r\n";

	if(OpenFile() == false)			
		return;	
	
	if(SkipFileExtraCode() == false)
		return;

	// now we have read 1st token of source code
	//sRetVal = ParseProcedure();
	CString sToken = m_oToken.GetCurrentToken();

	if(sToken == "Option")
		ParseStatementOption(2);

	sToken = m_oToken.GetCurrentToken();
	if(sToken == "Dim")
		ParseStatementDimList(2);	

	ParseProcedureList();
	m_oToken.CloseSourceFile();
} // ParseFile()
void CParser::ParseStatementIf(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseStatemenIf " + sToken + "\r\n";	
/*
If condition Then
	[statements]
[ElseIf condition-n Then
	[elseifstatements] ...
[Else
	[elsestatements]]
End If	
*/	
	m_oToken.GetNextToken(); //skip current if token

	ParseCondition(nTabs+1);

	ParseStatementIfThen(nTabs+1);

	ParseStatementList(nTabs+1);
	//temp code to reach end (of if)		
	//while(sToken != "End" && sToken !="")		
		//sToken = m_oToken.GetNextToken();
	//skip end if
	//m_oToken.GetNextToken(); //skip end
	ParseStatementEnd(nTabs);
	m_oToken.GetNextToken(); //skip if
	
	//parse then
	//parse statement list
		//parse else if list (do it only if time possible)
	//parse end if		
}
void CParser::ParseProcedureTail(int nTabs)
{
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseProcedureTail\r\n";

	ParseStatementEnd(nTabs+1);
	ParseProcedureType(nTabs+1,false);
}
//CString CParser::ParseProcedureBody()
void CParser::ParseProcedureBody()
{
	int nTabs = 4;
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseProcedureBody\r\n";

	ParseStatementList(nTabs+1);
}
void CParser::ParseStatement(int nTabs)
{
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseStatement\r\n";
	CString sToken = m_oToken.GetCurrentToken();
	ETokenType tt = m_oToken.GetCurrentTokenType();

	if(sToken == "MsgBox")
		ParseStatementMsgBox(nTabs+1);
	else if(sToken == "Dim")
		ParseStatementDim(nTabs+1);
	else if(sToken == "If")
		ParseStatementIf(nTabs+1);
	else if(sToken == "While")
		ParseStatementWhile(nTabs+1);
	else if(tt == ttNames) // it is a it/var name
	{
		//////////////////////////////////////////////////////////
		//
		//
		//	may be converted into parse expr
		//
		//
		////////////////////////////////////////////////////////////
		
		ParseStatementAssignment(nTabs+1);

/*
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ "ttName " + sToken + "\r\n";

		m_oToken.GetNextToken();		
*/
	}
	else
	{		
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ "Unknown statement " + sToken + "\r\n"
			+ GetTabs(nTabs+1+1) + GetErrorString(); //"Other statement " + sToken + "\r\n";
		m_oToken.GetNextToken();
	}
	//for
	//do-while	
	//expression
} // ParseStatement()
void CParser::ParseStatementMsgBox(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseStatemenMsgBox " + sToken + "\r\n";

	m_oToken.GetNextToken();	
	ParseStatementMsgBoxPrompt(nTabs+1);	
}
void CParser::ParseConditionalOperator(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseConditionalOperator " + sToken + "\r\n";
	//condOpEqual,condOpLessThanEqual,condOpNotEqual,condOpLessThan
	//,condOpGreaterThanEqual,condOpGreaterThan
	ETokenType tt = m_oToken.GetCurrentTokenType();
	if(tt != condOpEqual && tt != condOpLessThanEqual 
		&& tt != condOpNotEqual && tt != condOpLessThan 
		&& tt != condOpGreaterThanEqual && tt != condOpGreaterThan)
	{
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ GetErrorString();
	}

	m_oToken.GetNextToken();
}
Пример #22
0
void Dinf::PrintBox(ostream& outStream, int depth) {
  std::string tabs = GetTabs(depth);

  outStream << tabs << "Dinf Box:" << std::endl;

  for (std::shared_ptr<Box> child : m_children) {
    child->PrintBox(outStream, depth + 1);
  }
}
Пример #23
0
//------------------------------------------------------------
wxString SnipWiz::FormatOutput(IEditor* pEditor, const wxString& text)
{
    wxString output = text;
    int curPos = pEditor->GetCurrentPosition();
    int curEol = pEditor->GetEOL();
    wxString tabs = GetTabs(pEditor, curPos);
    output.Replace(eol[curEol], eol[curEol] + tabs);
    return output;
}
Пример #24
0
void Stsz::PrintBox(std::ostream& outStream, int depth) {
  std::string tabs = GetTabs(depth);

  outStream << tabs << "STSZ Box:" << std::endl;

  outStream << tabs << "\tVersion: " << m_version << std::endl;
  outStream << tabs << "\tSampleSize: " << m_version << std::endl;
  outStream << tabs << "\tSampleCount: " << m_version << std::endl;
}
void CParser::ParseExpressionFactor(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	ETokenType tt = m_oToken.GetCurrentTokenType();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseExpressionFactor " + sToken + "\r\n";
	
	if(IsID() == true)
		ParseID(nTabs+1);
	else if(tt == ttNumber)	
		ParseNumber(nTabs+1);	
	else if(tt == ttFunctionStartBracket)
	{
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
		+ "ParseStartBarcket " + sToken + "\r\n";

		m_oToken.GetNextToken();

		ParseExpression(nTabs+1);

		sToken = m_oToken.GetCurrentToken();

		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
		+ "ParseEndBarcket " + sToken + "\r\n";

		if(sToken != ")")
			m_sProgress = m_sProgress + GetTabs(nTabs+1) 
				+ GetErrorString();

		m_oToken.GetNextToken();
	}	
	//else if(tt == ttFunctionEndBracket)
	//{
		//m_oToken.GetNextToken();
		//return;
	//}
	else
	{
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ GetErrorString();

		m_oToken.GetNextToken();
	}
}
void CParser::ParseDataType(int nTabs)
{	
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) + 
		"ParseDataType " + sToken;

	if(sToken == "Boolean" || sToken == "Byte" 
			|| sToken == "Currency" || sToken == "Date" 
			|| sToken == "Double" || sToken == "Integer" 
			|| sToken == "Long" || sToken == "Object" 
			|| sToken == "Single" || sToken == "String" 
			|| sToken == "Variant" || IsID() == true)
	{
		sToken = m_oToken.GetNextToken();
		if(sToken == ".")
		{
			sToken = m_oToken.GetNextToken();
			if(IsID() == false)
				m_sProgress = m_sProgress + GetTabs(nTabs+1) +
					GetErrorString();
			else
				m_sProgress = m_sProgress + "." + sToken;

			m_oToken.GetNextToken();
		}
		
		//return;
	}
	else if(sToken == "," || sToken == ")")
	{
		m_sProgress = m_sProgress + GetTabs(nTabs+1) +
			GetErrorString();
		//return;
	}
	else
	{
		m_sProgress = m_sProgress + GetTabs(nTabs+1) +
			GetErrorString();
		m_oToken.GetNextToken();
		//return;
	}	
	m_sProgress = m_sProgress + "\r\n";
}
void CParser::ParseStatementOption(int nTabs)
{	
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseStatementOption " + sToken + "\r\n";

	sToken = m_oToken.GetNextToken();

	ParseStatementOptionExplicit(nTabs+1);
}
void CParser::ParseArgumentList()
{	
	int nTabs = 5;
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) + 
		"ParseArgumentList\r\n";
	ETokenType tt = m_oToken.GetCurrentTokenType();
	CString stt = m_oToken.GetCurrentTokenTypeInString();

	// arg list may be empty
	if(sToken == ")")
		return;

	while(sToken != ")")
	//while(1)
	{
		ParseArgument();

		sToken = m_oToken.GetCurrentToken();

		if(sToken == ")")
			break;
		else if(sToken != ",")		
		{
			m_sProgress = m_sProgress + GetTabs(nTabs+1) +
				GetErrorString();
			while(sToken != ",")
			{
				sToken = m_oToken.GetNextToken();
				if(sToken == ")")
					break;
			}

		}

		// skip Comma
		if(sToken == ",")
			m_oToken.GetNextToken();													
	}

	//return "true";
} // ParseArgumentList()
void CParser::ParseExpressionTerm(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseExpressionTerm " + sToken + "\r\n";

	ParseExpressionFactor(nTabs+1);

	ETokenType tt = m_oToken.GetCurrentTokenType();
	while(tt == opMultiplyDivide)
	{
		sToken = m_oToken.GetCurrentToken();
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ "ParseOperatorMultiplyDivide " + sToken + "\r\n";

		m_oToken.GetNextToken();
		ParseExpressionFactor(nTabs+1);
		tt = m_oToken.GetCurrentTokenType();
	}
}
void CParser::ParseExpression(int nTabs)
{
	CString sToken = m_oToken.GetCurrentToken();
	m_sProgress = m_sProgress + GetTabs(nTabs) 
		+ "ParseExpression\r\n";

	ParseExpressionTerm(nTabs+1);

	ETokenType tt = m_oToken.GetCurrentTokenType();
	while(tt == opPlusMinus)
	{
		sToken = m_oToken.GetCurrentToken();
		m_sProgress = m_sProgress + GetTabs(nTabs+1) 
			+ "ParseOperatorPlusMinus " + sToken + "\r\n";

		m_oToken.GetNextToken();
		ParseExpressionTerm(nTabs+1);
		tt = m_oToken.GetCurrentTokenType();
	}
}