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

📄 jbrowselineparser.java

📁 java写的多功能文件编辑器
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
							messageElement = new UML.Message(msgStr, UML.Type.ERROR,									parentNode.getElement().getParentElement(), curTokenLine);							insertAsNode(messageElement, curElementStartPos, 									(UMLTree.Node) parentNode.getParent());							// attempt to continue by falling into body						}						if ( isBodyRequired && token.equals("{") ) {							parseSubState = ParseSubState.OP_BODY;							methodBraceCount++;						} else if ( !isBodyRequired && token.equals(";") ) {							// handle method with no body							UMLTree.Node o = (UMLTree.Node) nodeStack.pop();							parentNode = (UMLTree.Node) nodeStack.peek();							if (parentNode == root ) {								parseState = ParseState.POST_HEADER;								parseSubState = ParseSubState.SCANNING;							} else {								parseState = ParseState.PACKAGE_MEMBER;								parseSubState = ParseSubState.BODY;								mod = 0;								memberType = null;								memberName = null;							}							curElementStartPos = -1;						} else {							// error							if (isBodyRequired) {								msgStr = "Expecting body for the method.";								parseSubState = ParseSubState.BODY;								curElementStartPos = -1;								mod = 0;								memberType = null;								memberName = null;							} else {								msgStr = "Expecting ';' after abstract or native method.";								parseSubState = ParseSubState.OP_BODY;								methodBraceCount++;							}							// pop off stack							nodeStack.pop();							parentNode = (UMLTree.Node) nodeStack.peek();							// Create error node and increment count							results.incErrorCount();							messageElement = new UML.Message(msgStr, UML.Type.ERROR,									parentNode.getElement(), curTokenLine);							insertAsNode(messageElement, curElementStartPos, parentNode);							continue;						} // if-else for "}" or ";"					} else if (token.equals(",") ) {						// expect more throws classes/interfaces						if (throwsFound && throwsOK ) {							throwsOK = false;						} else {							// phrase before ',' not OK							badFlag = true;						}					} else if ( Character.isJavaIdentifierStart(tokenStartChar) ) {						if (token.equals("throws")) {							if (throwsFound) {								badFlag = true;							} else {								throwsFound = true;								throwsOK = false;							}													} else {							// implements/extends what indentifier							if (!throwsOK) {								curElementStartPos = ls.getStartOffset() + curTokenPos;								curTokenLine = ts.getCurrentLineNum();								throwsOK = true;								currentElement = new UML.Throws(token,										parentNode.getElement(), curTokenLine);								insertAsNode(currentElement, curElementStartPos, parentNode);							} else {								badFlag = true;							}						}					} else {						// unexpected token						badFlag = true;					} // if-else if by token for PACKAGE_MEMBER - OP_POST_PARMS					if (badFlag) {						msgStr = "Error in 'throws' phrase.";						// Create error node and increment count						results.incErrorCount();						messageElement = new UML.Message(msgStr, UML.Type.ERROR,								parentNode.getElement().getParentElement(), curTokenLine);						insertAsNode(messageElement, curElementStartPos, 								(UMLTree.Node) parentNode.getParent());						// attempt to continue by skipping to beginning of body						boolean skipSuccess = false;						boolean popRequired = false;						if ( isBodyRequired ) {							skipSuccess = ts.skipUntil( "{" );							// entering operation body							parseSubState = ParseSubState.OP_BODY;							methodBraceCount++;						} else {							popRequired = true;							skipSuccess = ts.skipUntil( ";" );						}						if (!skipSuccess )  {							if ( isBodyRequired ) {								msgStr = "Expected '{' not found.";							} else {								msgStr = "Expected ';' not found.";							}							// Create error node and increment count							results.incErrorCount();							messageElement = new UML.Message(msgStr, UML.Type.ERROR,									parentNode.getElement().getParentElement(), curTokenLine);							insertAsNode(messageElement, curElementStartPos, 									(UMLTree.Node) parentNode.getParent());							popRequired = true;						}						if ( popRequired ) {														nodeStack.pop();							parentNode = (UMLTree.Node) nodeStack.peek();							// returning to package member body							parseSubState = ParseSubState.BODY;							curElementStartPos = -1;							mod = 0;							memberType = null;							memberName = null;						}					} // if (badFlag)					// end of code block for PACKAGE MEMBER - OP_POST_PARMS				// ------------------------------				// PACKAGE_MEMBER - OP_BODY				// ------------------------------				} else if (parseSubState == ParseSubState.OP_BODY) {					if (token.equals("{") ) {						methodBraceCount++;					} else if (token.equals("}") ) {						methodBraceCount--;						if (methodBraceCount == 0) {							nodeStack.pop();							parentNode = (UMLTree.Node) nodeStack.peek();							// return to body of this method's container							parseSubState = ParseSubState.BODY;							curElementStartPos = -1;							mod = 0;							memberType = null;							memberName = null;						}					} // if - else if for PACKAGE_MEMBER - OP_BODY				} else {					msgStr = "Unexpected State/Sub-State.";					// Create error node and increment count					results.incErrorCount();					messageElement = new UML.Message(msgStr, UML.Type.ERROR,							parentNode.getElement().getParentElement(), curTokenLine);					insertAsNode(messageElement, curElementStartPos, 							(UMLTree.Node) parentNode.getParent());				} // if...else if by parseState & parseSubState				// log every token at end of loop!//%				JBrowse.log(12, this, "(" + tokenCount + ") " + parseState + " "//%						+ parseSubState + " " + curTokenLine + "-" + curTokenPos//%						+ ":" + token);			} while (token != null);		} catch (TokenSource.Exception e) {			exceptionThrown = true;			curTokenLine = ts.getCurrentLineNum();			curTokenPos  = ts.getCurrentPos();			curElementStartPos = ls.getStartOffset() + curTokenPos;			// Unterminated multi-line comment, String or char expression			msgStr = e.getMessage();			// Create error node and increment count			results.incErrorCount();			try {				parentNode = (UMLTree.Node) nodeStack.peek();				currentElement = parentNode.getElement();			} catch (Exception ex) {				parentNode = null;				currentElement = null;			}			messageElement = new UML.Message(msgStr, UML.Type.ERROR,					currentElement, curTokenLine);			insertAsNode(messageElement, curElementStartPos, parentNode);		} catch (java.util.EmptyStackException e) {			exceptionThrown = true;//%			msgStr = "Caught java.util.EmptyStackException: " + e.getMessage();		} // end try-catch		// Report Final Errors		curTokenLine = ts.getCurrentLineNum();		curTokenPos  = ts.getCurrentPos();		curElementStartPos = ls.getStartOffset() + curTokenPos;		if ( !exceptionThrown &&				( methodBraceCount != 0 || parseState == ParseState.PACKAGE_MEMBER) ) {			msgStr = "Unbalanced braces";			// Create error node and increment count			results.incErrorCount();			try {				parentNode = (UMLTree.Node) nodeStack.peek();				currentElement = parentNode.getElement();			} catch (Exception e) {				parentNode = null;				currentElement = null;			}			messageElement = new UML.Message(msgStr, UML.Type.ERROR,					currentElement, curTokenLine);			insertAsNode(messageElement, curElementStartPos, parentNode);		}		if (results.getClassCount() == 0				&& results.getInterfaceCount() == 0) {			msgStr = "No package members found!";			// Show only this error			root.removeAllChildren();			// Create error node and increment count			results.setErrorCount(1);			messageElement = new UML.Message(msgStr, UML.Type.ERROR,					null, curTokenLine);			insertAsNode(messageElement, curElementStartPos, root);		} // if no package members found		if (displayOpt.getAlphaSort())		{			root.alphaSort();		}//end if alpha sort methods				return results;	} // parse(): JBrowseParser.Results	//-------------------------------------------------------------------------	private final UMLTree.Node insertAsNode(UML.Element e, int pos,			UMLTree.Node parentNode)	{//%		JBrowse.log(12, this, "Inserting node: " + e.toString(displayOpt)//%				+ "\n\tParent Node: " + parentNode);		// Insert Node		UMLTree.Node node = new UMLTree.Node(e);		node.setPosition( ls.createPosition(pos) );		// line below is faster than: treeModel.insertNodeInto(node, parentNode, index);		parentNode.insert(node, parentNode.getChildCount() );//%		JBrowse.log(10, this, "Inserted node: " + e.toString(displayOpt) );		return node;	} // insertAsNode(UML.Element, int, UMLTree.Node, int): UMLTree.Node} // class JBrowseLineParser implements JBrowseParser//=============================================================================class ParseState{	public static final ParseState		HEADER         = new ParseState("*HEADER********"),		POST_HEADER    = new ParseState("*POST_HEADER***"),		PACKAGE_MEMBER = new ParseState("*PACKAGE_MEMBER");	// use POSSIBLE_VALUES to build an iterator	public static final ParseState[] POSSIBLE_VALUES = {		HEADER, POST_HEADER, PACKAGE_MEMBER };	protected String label = null;	//-------------------------------------------------------------------------	private ParseState(String label)	{		this.label = label;	}	public boolean equals(Object o)	{		if (!(o instanceof ParseState)) return false;		return (this == o);	}	public String toString() { return label.toString(); }} // class ParseState//=============================================================================class ParseSubState{	public static final ParseSubState	// HEADER		PACKAGE       = new ParseSubState("-PACKAGE-------", ParseState.HEADER),		POST_PACKAGE  = new ParseSubState("-POST_PACKAGE--", ParseState.HEADER),		IMPORT        = new ParseSubState("-IMPORT--------", ParseState.HEADER),	// POST_HEADER		SCANNING      = new ParseSubState("-SCANNING------", ParseState.POST_HEADER),	// PACKAGE_MEMBER		POST_NAME     = new ParseSubState("-POST_NAME-----", ParseState.PACKAGE_MEMBER),		BODY          = new ParseSubState("-BODY----------", ParseState.PACKAGE_MEMBER),		OP_PARMS      = new ParseSubState("-OP_PARMS------", ParseState.PACKAGE_MEMBER),		OP_POST_PARMS = new ParseSubState("-OP_POST_PARMS-", ParseState.PACKAGE_MEMBER),		OP_BODY       = new ParseSubState("-OP_BODY-------", ParseState.PACKAGE_MEMBER);	// use POSSIBLE_VALUES to build an iterator	public static final ParseSubState[] POSSIBLE_VALUES = {			PACKAGE, POST_PACKAGE, IMPORT, SCANNING, POST_NAME, BODY, 			OP_PARMS, OP_POST_PARMS, OP_BODY };	protected String label = null;	protected ParseState parentState = null;	//-------------------------------------------------------------------------	private ParseSubState(String label, ParseState parentState)	{		this.label = label;		this.parentState = parentState;	}	public ParseState getParentState() { return parentState; }	public boolean equals(Object o)	{		if (!(o instanceof ParseSubState)) return false;		return (this == o);	}	public String toString() { return label.toString(); }} // class ParseSubState

⌨️ 快捷键说明

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