diff options
| author | Ito Kazumitsu <kaz@maczuka.gcd.org> | 2006-08-20 14:47:30 +0000 |
|---|---|---|
| committer | Ito Kazumitsu <kaz@maczuka.gcd.org> | 2006-08-20 14:47:30 +0000 |
| commit | cc4b3d34f0b1854867f160727dcfc78bcb90442c (patch) | |
| tree | 0e92990411754ff5bab246005a48417fff21b683 /gnu/java/util/regex/RETokenEnd.java | |
| parent | 94103ccfadf1a006fbd18e4751e5a8394403aed4 (diff) | |
| download | classpath-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 'gnu/java/util/regex/RETokenEnd.java')
| -rw-r--r-- | gnu/java/util/regex/RETokenEnd.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gnu/java/util/regex/RETokenEnd.java b/gnu/java/util/regex/RETokenEnd.java index 00efdb6a7..294e32085 100644 --- a/gnu/java/util/regex/RETokenEnd.java +++ b/gnu/java/util/regex/RETokenEnd.java @@ -45,6 +45,12 @@ final class RETokenEnd extends REToken { private String newline; private boolean check_java_line_terminators; + /** + * Indicates whether this token is a real one generated at compile time, + * or a fake one temporarily added by RE#getMatchImpl. + */ + private boolean fake = false; + RETokenEnd(int subIndex,String newline) { super(subIndex); this.newline = newline; @@ -57,10 +63,19 @@ final class RETokenEnd extends REToken { this.check_java_line_terminators = b; } + void setFake(boolean fake) { + this.fake = fake; + } + int getMaximumLength() { return 0; } + boolean match(CharIndexed input, REMatch mymatch) { + if (!fake) return super.match(input, mymatch); + return super.matchFake(input, mymatch); + } + REMatch matchThis(CharIndexed input, REMatch mymatch) { char ch = input.charAt(mymatch.index); if (ch == CharIndexed.OUT_OF_BOUNDS) |
