diff options
author | Mark Wielaard <mark@gcc.gnu.org> | 2006-05-18 17:29:21 +0000 |
---|---|---|
committer | Mark Wielaard <mark@gcc.gnu.org> | 2006-05-18 17:29:21 +0000 |
commit | 4f9533c7722fa07511a94d005227961f4a4dec23 (patch) | |
tree | 9f9c470de62ee62fba1331a396450d728d2b1fad /libjava/classpath/gnu/regexp/RETokenLookBehind.java | |
parent | eaec4980e139903ae9b274d1abcf3a13946603a8 (diff) | |
download | gcc-4f9533c7722fa07511a94d005227961f4a4dec23.zip gcc-4f9533c7722fa07511a94d005227961f4a4dec23.tar.gz gcc-4f9533c7722fa07511a94d005227961f4a4dec23.tar.bz2 |
Imported GNU Classpath 0.90
Imported GNU Classpath 0.90
* scripts/makemake.tcl: LocaleData.java moved to gnu/java/locale.
* sources.am: Regenerated.
* gcj/javaprims.h: Regenerated.
* Makefile.in: Regenerated.
* gcj/Makefile.in: Regenerated.
* include/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
* gnu/java/lang/VMInstrumentationImpl.java: New override.
* gnu/java/net/local/LocalSocketImpl.java: Likewise.
* gnu/classpath/jdwp/VMMethod.java: Likewise.
* gnu/classpath/jdwp/VMVirtualMachine.java: Update to latest
interface.
* java/lang/Thread.java: Add UncaughtExceptionHandler.
* java/lang/reflect/Method.java: Implements GenericDeclaration and
isSynthetic(),
* java/lang/reflect/Field.java: Likewise.
* java/lang/reflect/Constructor.java
* java/lang/Class.java: Implements Type, GenericDeclaration,
getSimpleName() and getEnclosing*() methods.
* java/lang/Class.h: Add new public methods.
* java/lang/Math.java: Add signum(), ulp() and log10().
* java/lang/natMath.cc (log10): New function.
* java/security/VMSecureRandom.java: New override.
* java/util/logging/Logger.java: Updated to latest classpath
version.
* java/util/logging/LogManager.java: New override.
From-SVN: r113887
Diffstat (limited to 'libjava/classpath/gnu/regexp/RETokenLookBehind.java')
-rw-r--r-- | libjava/classpath/gnu/regexp/RETokenLookBehind.java | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/libjava/classpath/gnu/regexp/RETokenLookBehind.java b/libjava/classpath/gnu/regexp/RETokenLookBehind.java index a6c1b34..8311d1a 100644 --- a/libjava/classpath/gnu/regexp/RETokenLookBehind.java +++ b/libjava/classpath/gnu/regexp/RETokenLookBehind.java @@ -55,35 +55,37 @@ final class RETokenLookBehind extends REToken return 0; } - boolean match(CharIndexed input, REMatch mymatch) + REMatch matchThis(CharIndexed input, REMatch mymatch) { int max = re.getMaximumLength(); CharIndexed behind = input.lookBehind(mymatch.index, max); REMatch trymatch = (REMatch)mymatch.clone(); REMatch trymatch1 = (REMatch)mymatch.clone(); REMatch newMatch = null; - int curIndex = trymatch.index + behind.length() - input.length(); + int diff = behind.length() - input.length(); + int curIndex = trymatch.index + diff; trymatch.index = 0; + trymatch.offset = 0; RETokenMatchHereOnly stopper = new RETokenMatchHereOnly(curIndex); REToken re1 = (REToken) re.clone(); re1.chain(stopper); if (re1.match(behind, trymatch)) { - if (negative) return false; - if (next(input, trymatch1)) - newMatch = trymatch1; + if (negative) return null; + for (int i = 0; i < trymatch.start.length; i++) { + if (trymatch.start[i] != -1 && trymatch.end[i] != -1) { + trymatch.start[i] -= diff; + if (trymatch.start[i] < 0) trymatch.start[i] -= 1; + trymatch.end[i] -= diff; + if (trymatch.end[i] < 0) trymatch.end[i] -= 1; + } + } + trymatch.index = mymatch.index; + trymatch.offset = mymatch.offset; + return trymatch; } - - if (newMatch != null) { - if (negative) return false; - //else - mymatch.assignFrom(newMatch); - return true; - } - else { // no match - if (negative) - return next(input, mymatch); - //else - return false; + else { + if (negative) return mymatch; + return null; } } @@ -105,8 +107,8 @@ final class RETokenLookBehind extends REToken this.index = index; } - boolean match(CharIndexed input, REMatch mymatch) { - return index == mymatch.index; + REMatch matchThis(CharIndexed input, REMatch mymatch) { + return (index == mymatch.index ? mymatch : null); } void dump(StringBuffer os) {} |