aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/regexp/RETokenRepeated.java
diff options
context:
space:
mode:
authorZiga Mahkovec <ziga.mahkovec@klika.si>2005-06-02 00:11:00 +0200
committerZiga Mahkovec <ziga@gcc.gnu.org>2005-06-01 22:11:00 +0000
commit7e1603c0f0dea72c62f5b78cbfbcbeaf4ac05207 (patch)
treec21882d9affe68b641900cf6ea85eb1ec0847f80 /libjava/gnu/regexp/RETokenRepeated.java
parentcce7074710fc4712506c58a183034e53b87262fa (diff)
downloadgcc-7e1603c0f0dea72c62f5b78cbfbcbeaf4ac05207.zip
gcc-7e1603c0f0dea72c62f5b78cbfbcbeaf4ac05207.tar.gz
gcc-7e1603c0f0dea72c62f5b78cbfbcbeaf4ac05207.tar.bz2
re PR libgcj/20435 (regex pattern compiling bug)
2005-06-01 Ziga Mahkovec <ziga.mahkovec@klika.si> PR libgcj/20435: * gnu/regexp/RESyntax.java (RE_POSSESSIVE_OPS): New field. (static): Add possessive matching to JAVA_1_4 syntax. * gnu/regexp/RETokenRepeated.java (possessive): New field. (makePossessive, isPossessive): New methods. (match): Don't back off during possessive matching. * gnu/regexp/RE.java (initalize): Accept possessive quantifier. * java/util/regex/Pattern.java (constructor): Switch syntax from PERL5 to JAVA_1_4. From-SVN: r100466
Diffstat (limited to 'libjava/gnu/regexp/RETokenRepeated.java')
-rw-r--r--libjava/gnu/regexp/RETokenRepeated.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/libjava/gnu/regexp/RETokenRepeated.java b/libjava/gnu/regexp/RETokenRepeated.java
index 8c78927..821e4c5 100644
--- a/libjava/gnu/regexp/RETokenRepeated.java
+++ b/libjava/gnu/regexp/RETokenRepeated.java
@@ -44,6 +44,7 @@ final class RETokenRepeated extends REToken {
private REToken token;
private int min,max;
private boolean stingy;
+ private boolean possessive;
RETokenRepeated(int subIndex, REToken token, int min, int max) {
super(subIndex);
@@ -61,6 +62,16 @@ final class RETokenRepeated extends REToken {
boolean isStingy() {
return stingy;
}
+
+ /** Sets possessive matching mode to true. */
+ void makePossessive() {
+ possessive = true;
+ }
+
+ /** Queries if this token has possessive matching enabled. */
+ boolean isPossessive() {
+ return possessive;
+ }
/**
* The minimum length of a repeated token is the minimum length
@@ -172,6 +183,8 @@ final class RETokenRepeated extends REToken {
}
}
// else did not match rest of the tokens, try again on smaller sample
+ // or break out when performing possessive matching
+ if (possessive) break;
}
if (allResults != null) {
mymatch.assignFrom(allResults); // does this get all?