Parser -> Remove simple commentary & add new operator (simple case)

This commit is contained in:
jeffcheasey88 2023-07-21 20:14:32 +02:00
parent b64a47faa9
commit 8ba4f91740

View file

@ -6,6 +6,7 @@ import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -27,25 +28,46 @@ public class JavaParser extends Parser<JavaElement> {
time = System.currentTimeMillis(); time = System.currentTimeMillis();
} }
public static void main(String[] args) throws Exception{
File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-parseur\\src\\be\\jeffcheasey88\\peeratcode\\parser\\java\\JavaParser.java");
BufferedReader reader = new BufferedReader(new FileReader(file));
time = System.currentTimeMillis();
Parser<JavaElement> parser = new JavaParser();
JavaElement jFile = new JavaElement();
parser.parse(reader, jFile);
System.out.println((System.currentTimeMillis()-time)+"ms");
System.out.println(TokenValidator.MAX_VALIDATE);
parser.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt"))));
}
public JavaParser(){ public JavaParser(){
Tokenizer tokenizer = new Tokenizer(); Tokenizer tokenizer = new Tokenizer(){
private List<Token> tokens = new ArrayList<>();
@Override
public List<Token> getTokens(){
return this.tokens;
}
@Override
public void parse(BufferedReader reader) throws Exception{
int lineNumber = 0;
String line;
while((line = reader.readLine()) != null){
lineNumber++;
for(int i = 0; i < line.length(); i++){
char c = line.charAt(i);
Token token;
if(Character.isAlphabetic(c) || Character.isDigit(c)){
String value = "";
int j = i;
for(; j < line.length(); j++){
c = line.charAt(j);
if(Character.isAlphabetic(c) || Character.isDigit(c)) value+=c;
else break;
}
token = new Token(lineNumber, i+1, value, TokenType.NAME);
i = j-1;
}else if(Character.isWhitespace(c)) continue;
else{
if(c == '/' && line.charAt(i+1) == '/') break;
token = new Token(lineNumber, i+1, ""+c, TokenType.DELIMITER);
}
this.tokens.add(token);
}
}
}
};
//SUMMARY //SUMMARY
//- Modifier //- Modifier
@ -102,6 +124,7 @@ public class JavaParser extends Parser<JavaElement> {
//VALUE //VALUE
StateTree<JavaElement> value = new StateTree<>(); StateTree<JavaElement> value = new StateTree<>();
value.then((validator) -> validator.validate((token) -> token.getValue().equals("new"))).then(value);
StateTree<JavaElement> value_name = value.then((validator) -> validator.validate( StateTree<JavaElement> value_name = value.then((validator) -> validator.validate(
(token) -> token.getType().equals(TokenType.NAME), (token) -> token.getType().equals(TokenType.NAME),
(bag, token) -> { (bag, token) -> {
@ -378,4 +401,20 @@ public class JavaParser extends Parser<JavaElement> {
return 0; return 0;
} }
public static void main(String[] args) throws Exception{
File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-parseur\\src\\be\\jeffcheasey88\\peeratcode\\parser\\java\\JavaParser.java");
BufferedReader reader = new BufferedReader(new FileReader(file));
time = System.currentTimeMillis();
Parser<JavaElement> parser = new JavaParser();
JavaElement jFile = new JavaElement();
parser.parse(reader, jFile);
System.out.println((System.currentTimeMillis()-time)+"ms");
System.out.println(TokenValidator.MAX_VALIDATE);
parser.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt"))));
}
} }