summaryrefslogtreecommitdiff
path: root/java/util
diff options
context:
space:
mode:
authorIto Kazumitsu <kaz@maczuka.gcd.org>2006-08-20 14:47:30 +0000
committerIto Kazumitsu <kaz@maczuka.gcd.org>2006-08-20 14:47:30 +0000
commitcc4b3d34f0b1854867f160727dcfc78bcb90442c (patch)
tree0e92990411754ff5bab246005a48417fff21b683 /java/util
parent94103ccfadf1a006fbd18e4751e5a8394403aed4 (diff)
downloadclasspath-cc4b3d34f0b1854867f160727dcfc78bcb90442c.tar.gz
2006-08-20 Ito Kazumitsu <kaz@maczuka.gcd.org>
Fixes bug #28412 * gnu/java/util/regex/CharIndexed.java(move1, setHitEnd, hitEnd): New methods. * gnu/java/util/regex/CharIndexedCharSequence.java, gnu/java/util/regex/CharIndexedInputStream.java: Implemented the new methods above. * gnu/java/util/regex/RE.java(REG_FIX_STARTING_POSITION): New flag, (match): call the new method setHitEnd of the input, (getMatchImpl): Handle the new flag REG_FIX_STARTING_POSITION, Some optimization commented out, Use CharIndexed#move1 instead of move. * gnu/java/util/regex/REMatch.java: Made some debugging methods public. * gnu/java/util/regex/REToken.java(match): The method body has been moved to an internal private method, (matchFake): New method, (setHitEnd): New method. * gnu/java/util/regex/RETokenChar.java(matchThis): Call setHitEnd if the match is not complete, (matchOneString): Count the number of characters which matched the pattern. * gnu/java/util/regex/RETokenEnd.java(fake): New field, (setFake): New method, (match): Call super.match or super.matchFake. * gnu/java/util/regex/RETokenEndSub.java(setHitEnd): New method. * gnu/java/util/regex/RETokenOneOf.java(match): call the new method setHitEnd of the input, * gnu/java/util/regex/RETokenRepeated.java(match): Likewise. * java/util/regex/Matcher.java(lookingAt, match): Use the new flag RE.REG_FIX_STARTING_POSITION, (hitEnd, toString): New methods.
Diffstat (limited to 'java/util')
-rw-r--r--java/util/regex/Matcher.java26
1 files changed, 24 insertions, 2 deletions
diff --git a/java/util/regex/Matcher.java b/java/util/regex/Matcher.java
index 25e73810e..3ddd42547 100644
--- a/java/util/regex/Matcher.java
+++ b/java/util/regex/Matcher.java
@@ -218,7 +218,7 @@ public final class Matcher implements MatchResult
public boolean lookingAt ()
{
- match = pattern.getRE().getMatch(inputCharIndexed, 0);
+ match = pattern.getRE().getMatch(inputCharIndexed, 0, RE.REG_FIX_STARTING_POSITION, null);
if (match != null)
{
if (match.getStartIndex() == 0)
@@ -243,7 +243,7 @@ public final class Matcher implements MatchResult
*/
public boolean matches ()
{
- match = pattern.getRE().getMatch(inputCharIndexed, 0, RE.REG_TRY_ENTIRE_MATCH);
+ match = pattern.getRE().getMatch(inputCharIndexed, 0, RE.REG_TRY_ENTIRE_MATCH|RE.REG_FIX_STARTING_POSITION, null);
if (match != null)
{
if (match.getStartIndex() == 0)
@@ -309,6 +309,28 @@ public final class Matcher implements MatchResult
return match.getStartIndex(group);
}
+ /**
+ * @return True if and only if the matcher hit the end of input.
+ */
+ public boolean hitEnd()
+ {
+ return inputCharIndexed.hitEnd();
+ }
+
+ /**
+ * @return A string expression of this matcher.
+ */
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append(this.getClass().getName())
+ .append("[pattern=").append(pattern.pattern())
+ .append(" region=").append("0").append(",").append(input.length())
+ .append(" lastmatch=").append(match == null ? "" : match.toString())
+ .append("]");
+ return sb.toString();
+ }
+
private void assertMatchOp()
{
if (match == null) throw new IllegalStateException();