dfs 2002/10/14 09:16:22
Modified: src/java/org/apache/oro/text/regex Perl5Compiler.java
Log:
Added support for negating modifiers. For example (?-i)foo. Note,
we still do not support Perl 5.005+ group-local modifiers like
(?imsx-imsx:pattern).
Revision Changes Path
1.14 +11 -5
jakarta-oro/src/java/org/apache/oro/text/regex/Perl5Compiler.java
Index: Perl5Compiler.java
===================================================================
RCS file:
/home/cvs/jakarta-oro/src/java/org/apache/oro/text/regex/Perl5Compiler.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- Perl5Compiler.java 23 Oct 2001 06:42:20 -0000 1.13
+++ Perl5Compiler.java 14 Oct 2002 16:16:22 -0000 1.14
@@ -1524,11 +1524,12 @@
private int __parseExpression(boolean isParenthesized, int[] hintFlags)
throws MalformedPatternException {
char value, paren;
+ char[] modifierFlags, posFlags = { 0 }, negFlags = { 0 };
int nodeOffset = OpCode._NULL_OFFSET, parenthesisNum = 0, br, ender;
- int[] flags = { 0 };
- String modifiers = "iogmsx";
-
+ int[] flags = { 0 };;
+ String modifiers = "iogmsx-";
+ modifierFlags = posFlags;
// Initially we assume expression doesn't match null string.
hintFlags[0] = __NONNULL;
@@ -1557,9 +1558,14 @@
value = __input._getValue();
while(value != CharStringPointer._END_OF_STRING &&
modifiers.indexOf(value) != -1) {
- __setModifierFlag(__modifierFlags, value);
+ if(value == '-')
+ modifierFlags = negFlags;
+ __setModifierFlag(modifierFlags, value);
value = __input._increment();
}
+ __modifierFlags[0] |= posFlags[0];
+ __modifierFlags[0] &= ~negFlags[0];
+
if(value != ')')
throw new MalformedPatternException(
"Sequence (?" + value + "...) not recognized");
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>