51 lines
1.2 KiB
Java
51 lines
1.2 KiB
Java
package be.jeffcheasey88.peeratcode.parser;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.BufferedWriter;
|
|
|
|
import be.jeffcheasey88.peeratcode.parser.state.StateTree;
|
|
|
|
public class Parser<E>{
|
|
|
|
private Tokenizer tokenizer;
|
|
private StateTree<E> state;
|
|
|
|
public Parser(){}
|
|
|
|
public void setTokenizer(Tokenizer tokenizer){
|
|
this.tokenizer = tokenizer;
|
|
}
|
|
|
|
public void setStateTree(StateTree<E> stateTree){
|
|
this.state = stateTree;
|
|
}
|
|
|
|
public final void parse(BufferedReader reader, E container) throws Exception{
|
|
this.tokenizer.parse(reader);
|
|
|
|
this.state.seed(this.tokenizer, container);
|
|
}
|
|
|
|
//tmp
|
|
public void build(BufferedWriter writer) throws Exception{
|
|
Token[] confirmed = new Token[TokenValidator.MAX_VALIDATE];
|
|
System.arraycopy(tokenizer.getTokens().toArray(), 0, confirmed, 0, confirmed.length);
|
|
int line = 1;
|
|
int character = 1;
|
|
for(Token token : confirmed){
|
|
while(token.getLineNumber() != line){
|
|
writer.write("\n");
|
|
line++;
|
|
character = 1;
|
|
}
|
|
while(token.getCharacterNumber() != character){
|
|
writer.write(" ");
|
|
character++;
|
|
}
|
|
writer.write(token.getValue());
|
|
character+=token.getValue().length();
|
|
}
|
|
writer.flush();
|
|
writer.close();
|
|
}
|
|
}
|