Propagation + static method in Visitor for TokenVisitor

This commit is contained in:
jeffcheasey88 2025-05-08 21:39:00 +02:00
parent b635c13d57
commit e04b0f0262
2 changed files with 17 additions and 1 deletions

View file

@ -11,6 +11,12 @@ public class TokenVisitor extends Visitor<Token>{
private Predicate<TokenType> type; private Predicate<TokenType> type;
private Predicate<Integer> line; private Predicate<Integer> line;
private Predicate<Integer> character; private Predicate<Integer> character;
private boolean propagate;
public TokenVisitor(boolean propagate){
this.propagate = propagate;
}
@Override @Override
public boolean canVisit(Class<?> type){ public boolean canVisit(Class<?> type){
@ -19,7 +25,7 @@ public class TokenVisitor extends Visitor<Token>{
@Override @Override
public boolean canPropagate(){ public boolean canPropagate(){
return false; return this.propagate;
} }
public TokenVisitor named(Predicate<String> predicate){ public TokenVisitor named(Predicate<String> predicate){

View file

@ -1,7 +1,17 @@
package dev.peerat.parser.visitor; package dev.peerat.parser.visitor;
import dev.peerat.parser.Token;
public abstract class Visitor<T>{ public abstract class Visitor<T>{
public static Visitor<Token> allToken(){
return new TokenVisitor(true);
}
public static Visitor<Token> token(){
return new TokenVisitor(false);
}
public abstract boolean canVisit(Class<?> type); //TODO change "Class<?> type" into "Object element" ? public abstract boolean canVisit(Class<?> type); //TODO change "Class<?> type" into "Object element" ?
public abstract boolean canPropagate(); public abstract boolean canPropagate();