View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide

Parser

erste skizze
public class AbstractParser()
{
public Map commands;
public Map clientStrings;

	static AbstractParser init() {
		commands = new Map;
		addCommands();
	}
	static void addCommands {
		//define in subclass
	}
	
	public String[] tokenize(String string)
	{
		StringTokenizer t = new StringTokenizer(string);
		String token;
		String stringBuffer = new String;
		
		while (t.hasMoreTokens()) {
				token = t.nextToken();
        		commandList.add(token);
        	};
        	return commandList
	
	}
	
	public void read(String string) {
		StringTokenizer t = new StringTokenizer(string);
		String name;
		boolean isEnd;
		String[] commandList = new List;
		String[] lastCommands;
		
		commandList = tokenize(string);
        	
        	isEnd = (string.lastElement != "\n\r");
        	name = commandList[0];
        	lastCommands = clientStrings.getElement(name);
        	
        	if(lastCommands == null) //if there is no past commands
        	 {
        		if(isEnd)	//if this is an end of line
				{ parseCommand(commandList) }
				{  lastCommands.addAll(commandList) }
        	
        	}
        	else
        	{
        		lastCommands.addAll(commandList);
        		if(isEnd) {
        			parseCommand(lastCommands)
        		}
        		
        	}
   }
    
	public boolean hasStoredStrings(String name) {
		return (clientStrings.getElement(name) != null)
	}
	
	public void storeStrings(String name, String[] strings) {
		
		lastCommands = clientStrings.getElement(name);
     	if(lastCommands == null) {
     		if(
     			clientStrings.put(name, lastCommands);
     		}
     		else {
     			lastCommands.addAll(lastCommands);
     		}
	
	}
	public void parseCommand(String[] strings) {
		string name = strings.removeAt(0);
		string command = strings.removeAt(1);
		Function func = commands.getElement(command);
		if(func != null)
		{ func.value(name, strings) }
	
	}
}

//example parser
public class BasicParser extends AbstractParser {
	
	public void print(String string) {
		System.out.println(string)
	}
	
	static void addCommands {
		
		super.addCommands;//call in every subclass
		commands.addElement("CHAT",
			{ arg name, strings;
				print((name + ": ").addAll(strings));
			});
		commands.addElement("OK",
			{ arg name;
				print(name + " has joined");
			});
	}


}

//authors so far:
julian


Links to this Page