X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fstring%2Ftokenizer%2FTokenizer.java;h=01216d8411db0229a3d218ddca001f154b32f330;hb=4d4a86dce1b84d9ef26d95168f2fea5477cedaa5;hp=899f8c4d7ed8fe0da58a944a38f52d910957cc1f;hpb=0b3d733f44e95ee093985531072a1f8965f7c09a;p=svjatoslav_commons.git diff --git a/src/main/java/eu/svjatoslav/commons/string/tokenizer/Tokenizer.java b/src/main/java/eu/svjatoslav/commons/string/tokenizer/Tokenizer.java index 899f8c4..01216d8 100755 --- a/src/main/java/eu/svjatoslav/commons/string/tokenizer/Tokenizer.java +++ b/src/main/java/eu/svjatoslav/commons/string/tokenizer/Tokenizer.java @@ -46,7 +46,7 @@ public class Tokenizer { return this; } - public void expectNextToken(final String value) + public void expectAndConsumeNextToken(final String value) throws InvalidSyntaxException { final TokenizerMatch match = getNextToken(); if (!value.equals(match.token)) @@ -104,6 +104,31 @@ public class Tokenizer { return false; } + public TokenizerMatch peekNextToken(){ + TokenizerMatch result = getNextToken(); + unreadToken(); + return result; + } + + public boolean peekIsOneOf(String ... possibilities){ + String nextToken = peekNextToken().token; + + for (String possibility : possibilities) + if (possibility.equals(nextToken)) + return true; + + return false; + } + + public void peekExpectNoneOf(String ... possibilities) throws InvalidSyntaxException { + TokenizerMatch nextToken = peekNextToken(); + + for (String possibility : possibilities) + if (possibility.equals(nextToken)) + throw new InvalidSyntaxException("Not expected \"" + nextToken + "\" here."); + } + + public boolean sequenceMatches(final String sequence) { if ((currentIndex + sequence.length()) > source.length()) return false;