📄 javaparse_1.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 + -