peer-at-code-parser-java/src/be/jeffcheasey88/peeratcode/parser/Parser.java
2023-07-11 11:52:42 +02:00

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();
}
}