From 8ba4f917407e1974856fc43e35074df141fc5be7 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Fri, 21 Jul 2023 20:14:32 +0200 Subject: [PATCH] Parser -> Remove simple commentary & add new operator (simple case) --- .../peeratcode/parser/java/JavaParser.java | 75 ++++++++++++++----- 1 file changed, 57 insertions(+), 18 deletions(-) diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index 05dffd5..c70929d 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -6,6 +6,7 @@ import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.lang.reflect.Modifier; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -27,25 +28,46 @@ public class JavaParser extends Parser { 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 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(){ - Tokenizer tokenizer = new Tokenizer(); + Tokenizer tokenizer = new Tokenizer(){ + + private List tokens = new ArrayList<>(); + + @Override + public List 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 //- Modifier @@ -102,6 +124,7 @@ public class JavaParser extends Parser { //VALUE StateTree value = new StateTree<>(); + value.then((validator) -> validator.validate((token) -> token.getValue().equals("new"))).then(value); StateTree value_name = value.then((validator) -> validator.validate( (token) -> token.getType().equals(TokenType.NAME), (bag, token) -> { @@ -378,4 +401,20 @@ public class JavaParser extends Parser { 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 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")))); + } }