📄 javaparser.h
字号:
// JavaParser.h: interface for the CJavaParser class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_JAVAPARSER_H__E0D1DA64_2784_48E3_A29F_31767A6AE88B__INCLUDED_)
#define AFX_JAVAPARSER_H__E0D1DA64_2784_48E3_A29F_31767A6AE88B__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ptrStack.h"
#include "browser.h"
class CJavaDeclManager;
class CJavaParser : public CBaseParser
{
int m_nCharIndex;
int m_nLineIndex;
int m_nLineLength;
int m_nStartIndex;
int m_nStartLine;
LPCTSTR m_lszpLine;
CString m_strCurToken;
CJavaDeclManager* m_pDeclManager;
bool m_bSuccess;
bool m_bDynamiclyParsing;
//bool m_bPeeking;
bool m_bTotalParse;
bool m_bCodeCompletionAction;
int m_nLiteralType;
int m_nStopPos;
CString m_strImportType;
genStack<CString> m_stTokens;
CStringList m_lstrArgs;
bool m_bCCSuccess;
struct __state__{
int line;
int index;
int length;
LPCTSTR szpLine;
CString token;
__state__(int li,int in,int len,LPCTSTR szpl, CString s)
{
line = li; index = in; token = s;length = len;szpLine = szpl;
}
__state__()
{
}
};
genStack<__state__> m_stStates;
UINT m_nDeclType;
//semantic related data
CStringList m_lstrModifiers;
CString m_strAccessModifier;
CString m_strReturnType;
CString m_strMethodName;
CString m_strFullMethDescrpt;
CStringList m_lstrVariableNames;
CString m_strClassOrInterfaceName;
CString m_strSuper;
CStringList m_lstrSuperInterfaceList;
CStringList m_lstrImplementedInterfaces;
CString m_strFieldType;
CString m_strParamName;
CString m_strParamType;
CStringList m_lstrParams;
CStringList m_lstrParamTypes;
CString m_strPartialMethodSig;
CString m_strImport;
CString m_strReturnedVal;
CStringList m_lstrMethodInfo;
CString m_strPackage;
void smtAddModifier(CString strMod);
void smtSetAccessModifier(CString strMod);
void smtSetReturnType(CString strRetType);
void smtSetMethodName(CString strMeth);
void smtSetFullMethDescpt(CString strMeth);
void smtSetVariableName(CString strVar);
void smtSetClassOrInterfaceName(CString strClassOrIntfName);
void smtSetSuper(CString strSuper);
void smtAddSuperInterface(CString strIntf);
void smtAddImplIntf(CString strIntf);
void smtSetFieldType(CString strFieldType);
void smtSetParamName(CString strParam);
void smtSetParamType(CString strParamType);
struct _token
{
int type;
CString strToken;
_token(int t,CString str)
{
type = t; strToken = str;
}
_token(){type =0;}
};
struct _expr
{
genStack<_token> m_stkOperandStack;
genStack<_token> m_stkOperatorStack;
void Pop(_token& token)
{
m_stkOperandStack.Pop(token);
}
};
_expr m_exprAutomaton;
CString m_strCCType;
CBlockDecl* m_pLastBlock;
int m_nBlockCount;
public:
static LPCTSTR m_lszpBasicTypes[];
static LPCTSTR m_lszpPostFixOps[];
static LPCTSTR m_lszpInfixOps[];
static LPCTSTR m_lszpPrefixOps[];
static LPCTSTR m_lszpAssignmentOps[];
static LPCTSTR m_lszpModifiers[];
static LPCTSTR m_lszpJavaKeyword[];
CJavaParser(CJavaDeclManager*,bool = true);
virtual ~CJavaParser();
void saveState();
void resetState();
void popStack();
bool expr_0();
bool expr_1();
bool expr_2();
bool expr_3();
bool expr_1rest();
bool expr_2rest();
bool primary();
bool selector();
bool arguments();
bool superSuffix();
bool literal();
bool creator();
bool qualifiedIdentifier();
bool arrayCreatorRest();
bool classCreatorRest();
bool arrayInitializer();
bool assignmentOperator();
bool prefixOp();
bool postfixOp();
bool infixop();
bool identifier();
bool innercreator();
bool identifierSuffix();
bool basicType();
bool variableInitializer();
bool memberdecl();
bool methodOrFieldRest();
bool methodOrFieldDecl();
bool type();
bool variableDeclarators();
bool variableDeclarator();
bool variableDeclaratorRest();
bool variableDeclaratorsRest();
bool variableDeclaratorId();
bool methodDeclaratorRest();
bool bracketsOpt();
bool formalParameters();
bool formalParameter();
bool qualifiedIdentifierList();
bool localVariableDeclarationStatement();
bool argumentsOpt();
bool parExpression();
bool blockStatement();
bool classOrInterfaceDeclaration();
bool modifier();
bool modifiersOpt();
bool classDeclaration();
bool typeList();
bool packageDeclaration();
bool importDeclaration();
bool integerLiteral();
bool decimalLiteral();
bool hexLiteral();
bool hexDigit(char nChar);
bool octalLiteral();
bool floatingPointLiteral();
bool stringLiteral();
bool characterLiteral();
bool booleanLiteral();
bool nullLiteral();
bool constructorDeclaratorRest();
bool classBodyDeclaration();
bool interfaceDeclaration();
bool interfaceBodyDeclaration();
bool interfaceMemberDecl();
bool interfaceMethodOrFieldDecl();
bool interfaceMethodOrFieldRest();
bool voidInterfaceMethodDeclaratorRest();
bool interfaceMethodDeclaratorRest();
bool voidMethodDeclarationRest();
bool block();
bool constantDeclaratorsRest();
bool constantDeclarator();
bool constantDeclaratorRest();
bool typeDeclaration();
bool getNextToken();
bool getNextLine();
bool declareMember();
bool declareLocal();
bool declareType();
bool declarePackage();
bool declareImport();
bool parse();
bool BalanceBraces(CString);
void parseOnFileLoaded();
void dynamicParse(int nCharIndex,int nLineIndex,CBlockDecl* pBlock= NULL);
virtual void UpdateBlock(CBlockDecl* pDecl);
bool isoperator();
bool skipExtComment();
bool skipExtCommentBU();
bool skipSingleLineComment();
bool getStringOrCharLiteral(char nChar);
bool getStringOrCharLiteralBU(char nChar);
bool peekStringOrCharLiteralBU(char nChar);
bool isJavaKeyword();
bool isAssignmentOp();
bool isBasicType();
bool isIdentifier();
bool isLiteral();
bool isCharacterLiteral();
bool isStringLiteral();
bool isIntegerLiteral();
bool isFloatingPointLiteral();
bool isInfixOp();
bool isPostfixOp();
bool isType();
bool isPrefixOp();
bool isModifier();
bool isAccessModifier();
bool getNextTokenImpl();
void findStopSymbol();
bool getOperator();
bool FIRSTexpr();
bool FIRSTexpr_3();
bool FIRSTselector();
bool FIRSTexpression2rest();
bool FIRSTidentifierSuffix();
void ResetSemanticUtil();
bool declField();
bool declMethod();
bool declInterface();
bool declClass();
bool declBlock();
bool declEndBrace();
bool declPackage();
bool declImport();
bool getLineAbove();
bool OnDotImpl(int nCharIndex,int nLineIndex,CString&);
bool OnCallMethod(int nCharIndex, int nLineIndex,CString& strOutType,
CString& strMethod);
bool extractInvockedMethod();
bool limitedGetNextToken();
bool getNextNonSpaceCharBU(char& nChar);
bool extIdentifierBU();
bool BackTrackOneSentence();
int precedence(CString strOp);
void setImportType(CString strType){m_strImportType = strType;}
bool validRelation(UINT nWouldBeChild,UINT nWouldBeParent);
void createQualifiedName(__CBaseDecl*,CString&);
void exprEvaluator(CString strToken,int nType);
void getReturnType();
void execute();
bool incommentBlock();
bool totalParse(){return m_bTotalParse;};
void ReArrangeBraces(__CBaseDecl*,CBlockDecl*);
};
#endif // !defined(AFX_JAVAPARSER_H__E0D1DA64_2784_48E3_A29F_31767A6AE88B__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -