diff --git a/src/dev/peerat/parser/visitor/TokenVisitor.java b/src/dev/peerat/parser/visitor/TokenVisitor.java index 3837e71..90b8e67 100644 --- a/src/dev/peerat/parser/visitor/TokenVisitor.java +++ b/src/dev/peerat/parser/visitor/TokenVisitor.java @@ -11,6 +11,12 @@ public class TokenVisitor extends Visitor{ private Predicate type; private Predicate line; private Predicate character; + + private boolean propagate; + + public TokenVisitor(boolean propagate){ + this.propagate = propagate; + } @Override public boolean canVisit(Class type){ @@ -19,7 +25,7 @@ public class TokenVisitor extends Visitor{ @Override public boolean canPropagate(){ - return false; + return this.propagate; } public TokenVisitor named(Predicate predicate){ diff --git a/src/dev/peerat/parser/visitor/Visitor.java b/src/dev/peerat/parser/visitor/Visitor.java index 350084c..d517c6a 100644 --- a/src/dev/peerat/parser/visitor/Visitor.java +++ b/src/dev/peerat/parser/visitor/Visitor.java @@ -1,7 +1,17 @@ package dev.peerat.parser.visitor; +import dev.peerat.parser.Token; + public abstract class Visitor{ + public static Visitor allToken(){ + return new TokenVisitor(true); + } + + public static Visitor token(){ + return new TokenVisitor(false); + } + public abstract boolean canVisit(Class type); //TODO change "Class type" into "Object element" ? public abstract boolean canPropagate();