⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javaparse_1.cpp

📁 用bcg库编写的java IDE 源码
💻 CPP
字号:
// JavaParse_1.cpp: implementation of the CJavaParse_1 class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "visualjava.h"
#include "JavaParse_1.h"
#include "VisualJavaDoc.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CJavaParse_1::CJavaParse_1()
{

}

CJavaParse_1::~CJavaParse_1()
{

}

bool CJavaParse_1::getNextToken()
{

  return false;
}

bool CJavaParse_1::getNextLine()
{
  int nLineCount = m_pDeclManager->getTextBuffer()->GetLineCount();
  ++m_nLineIndex;
  if(m_nLineIndex<nLineCount)
  {
     m_nLineLength  = m_pDeclManager->getTextBuffer()->GetLineLength(m_nLineIndex);
     m_lszpLine     = m_pDeclManager->getTextBuffer()->GetLineChars(m_nLineIndex);
	 m_nCharIndex   = 0;
	 return true;
  }
  else
  {
	  --m_nLineIndex;
    return false;
  }   
}

void CJavaParse_1::saveState()
{
  __state__  state(m_nLineIndex,m_nCharIndex,m_strCurToken);
  m_stStates.Push(state);
}

void CJavaParse_1::resetState()
{
  __state__  state;
  m_stStates.Pop(state);
  m_nLineIndex = state.line; m_nCharIndex = state.index; m_strCurToken = state.token;
}

void CJavaParse_1::popStack()
{
  m_stStates.Pop();
}

	
bool CJavaParse_1::package_statement()//HANDLE:package
{
  if(package_name())
  {
	if(getNextToken() && (m_strCurToken.compare(";") == 0))return true;
  }return false;
}


bool CJavaParse_1::import_statement()//HANDLE:import
{
   if(package_name())
   {
	 if(!getNextToken())return false;
	 if((m_strCurToken.compare(".") == 0))
	 {
       if(getNextToken()&&(m_strCurToken.compare("*") == 0))
	   {
         if(getNextToken()&&(m_strCurToken.compare(";") == 0))return true;
	   }
	 }
	 else
     if((m_strCurToken.compare(";") == 0))
          return true;
   }return false;

   /*******GRAMMATICALLY CORRECT IMPLEMENTATION
   saveState();
   if(package_name())
   {
     popStack();
	 if(getNextToken()&&(m_strCurToken.compare(".") == 0))
	 {
       if(getNextToken()&&(m_strCurToken.compare("*") == 0))
	   {
         if(getNextToken()&&(m_strCurToken.compare(";") == 0))return true;
	   }
	 }
   }
   else
   {
     resetState();
	 if(class_name()/*||interface_name()*)
	 {
       if(getNextToken()&&(m_strCurToken.compare(";") == 0))return true;
	 }
   }return false;***********/
}

	
bool CJavaParse_1::type_declaration()
{
  if(!doc_comment())return false;
  if(!getNextToken())return false;

  if(m_strCurToken.compare("class") == 0)
      return class_declaration();
  else
  if(m_strCurToken.compare("interface") == 0)
	  return interface_declaration();

  return false;
}

	
bool CJavaParse_1::doc_comment()
{
return false;
}

	
bool CJavaParse_1::class_declaration()//HANDLE : class
{
   if(identifier())
   {
      if(!getNextToken())return false;
	  if(m_strCurToken.compare("extends") == 0)
	  {
        if(!class_name())return false;
        if(!getNextToken())return false;
	  }
	  if(m_strCurToken.compare("implements") == 0)
	  {
		 while(true)
		 {	
           if(interface_name())
		   {
             if(!getNextToken())return false;
		     if(m_strCurToken.compare(",") != 0)
				 break;
		   }else return false;
		 }
	  }if(m_strCurToken.compare("{") == 0)return true;
   }return false;
}  

	
bool CJavaParse_1::interface_declaration()//HANDLE : "interface"
{
   if(identifier())
   {
      if(!getNextToken())return false;
	  if(m_strCurToken.compare("extends") == 0)
	  {
		  while(true)
		  {
            if(!interface_name())return false;
            if(!getNextToken())return false;
		    if(m_strCurToken.compare(",") != 0)
			      break;
		  }
	  }if(m_strCurToken.compare("{") == 0)return true;
   }return false;
}

	
bool CJavaParse_1::field_declaration()//HANDLE : (type | identifier)
{
   saveState();
   if(identifier())
   {
	 popStack();
     if(!getNextToken())return false;
     if(m_strCurToken.compare("(") == 0)
		 return constructor_declaration();
   }
   else
   {
     resetState();
	 if(type())
     {
	   if(identifier())
	   {
		 saveState();
         if(!getNextToken())return false;
         if(m_strCurToken.compare("(") == 0)
		 {
			popStack();
            return method_declaration();
		 }
		 else
		 {
            resetState();
			return variable_declaration();
		 }
	   }
	 }
   }return false;
}

	
bool CJavaParse_1::method_declaration() //HANDLE : "("
{
  
  return false;
}

	
bool CJavaParse_1::constructor_declaration()
{
return false;
}


	
bool CJavaParse_1::statement_block()
{
return false;
}

	
bool CJavaParse_1::variable_declaration()
{
return false;
}

	
bool CJavaParse_1::variable_declarator()
{
return false;
}

	
bool CJavaParse_1::variable_initializer()
{
return false;
}

	
bool CJavaParse_1::static_initializer()
{
return false;
}

	
bool CJavaParse_1::parameter_list()
{
return false;
}

	
bool CJavaParse_1::parameter()
{
return false;
}

	
bool CJavaParse_1::statement()
{
return false;
}

	
bool CJavaParse_1::if_statement()
{
return false;
}

	
bool CJavaParse_1::do_statement()
{
return false;
}

	
bool CJavaParse_1::while_statement()
{
return false;
}

	
bool CJavaParse_1::for_statement()
{
return false;
}

	
bool CJavaParse_1::try_statement()
{
return false;
}

	
bool CJavaParse_1::switch_statement()
{
return false;
}

	
bool CJavaParse_1::expression()
{
return false;
}

	
bool CJavaParse_1::numeric_expression()
{
return false;
}

	
bool CJavaParse_1::testing_expression()
{
return false;
}

	
bool CJavaParse_1::logical_expression()
{
return false;
}

	
bool CJavaParse_1::string_expression()
{
return false;
}

	
bool CJavaParse_1::bit_expression()
{
return false;
}

	
bool CJavaParse_1::casting_expression()
{
return false;
}

	
bool CJavaParse_1::creating_expression()
{
return false;
}

	
bool CJavaParse_1::literal_expression()
{
return false;
}

	
bool CJavaParse_1::arglist()
{
return false;
}

	
bool CJavaParse_1::type()
{
return false;
}

	
bool CJavaParse_1::type_specifier()
{
return false;
}

	
bool CJavaParse_1::modifier()
{
return false;
}

	
bool CJavaParse_1::package_name()
{
return false;
}

	
bool CJavaParse_1::class_name()
{
return false;
}

	
bool CJavaParse_1::interface_name()
{
return false;
}
	
bool CJavaParse_1::integer_literal()
{
return false;
}

	
bool CJavaParse_1::float_literal()
{
return false;
}
	
bool CJavaParse_1::decimal_digit()
{
return false;
}

	
bool CJavaParse_1::exponent_part()
{
return false;
}

	
bool CJavaParse_1::float_type_suffix()
{
return false;
}

	
bool CJavaParse_1::character()
{
return false;
}
	
bool CJavaParse_1::string()
{
return false;
}
	
bool CJavaParse_1::identifier()
{
return false;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -