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

📄 jsfunctionparametersparser.java

📁 这是一个基于java编写的torrent的P2P源码
💻 JAVA
字号:
package com.aelitis.azureus.util;

import java.util.ArrayList;
import java.util.List;

public class JSFunctionParametersParser
{

	private ParserState currentState;

	private String params;

	private List parameters;

	private StringBuffer currentParameter;

	private abstract class ParserState
	{
		protected ParserState previousState;

		public ParserState(ParserState previousState) {
			this.previousState = previousState;
		}

		public abstract void processCharacter(char c);
	}

	private class ParserStateInList extends ParserState
	{

		public ParserStateInList(ParserState previousState) {
			super(previousState);
		}

		public void processCharacter(char c) {
			switch (c) {
				case '|':
					parameters.add(currentParameter.toString());
					currentParameter = new StringBuffer();
					break;

				case '\\':
					currentState = new ParserStateInEscapedCharacter(this);
					break;

				default:
					currentParameter.append(c);
					break;
			}
		}
	}

	private class ParserStateInEscapedCharacter extends ParserState
	{

		public ParserStateInEscapedCharacter(ParserState previousState) {
			super(previousState);
		}

		public void processCharacter(char c) {
			//In all cases we have to return to the previous state
			currentState = previousState;

			switch (c) {
				case '\\':
					currentParameter.append(c);
					break;

				case '|':
					currentParameter.append(c);
					break;

				default:
					//Invalid character escaped...
					break;
			}
		}
	}

	private JSFunctionParametersParser(String params) {
		this.params = params;
	}

	private void parse() {
		parameters = new ArrayList();
		currentState = new ParserStateInList(null);
		currentParameter = new StringBuffer();

		for (int i = 0; i < params.length(); i++) {
			char c = params.charAt(i);
			currentState.processCharacter(c);
		}
		parameters.add(currentParameter.toString());
	}

	public static List parse(String params) {
		JSFunctionParametersParser parser = new JSFunctionParametersParser(params);
		parser.parse();
		return parser.parameters;
	}

}

⌨️ 快捷键说明

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