/** This class implements the (?: ... ) extended Pattern.\r
It provides a base class from which we derive the\r
[ ... ], ( ... ), (?! ... ), and (?= ... ) patterns. */\r
-class Or extends Pattern {\r
- Vector v;\r
- Pattern[] pv = null;\r
- Or() { v = new Vector(); }\r
- String leftForm() { return "(?:"; }\r
- String rightForm() { return ")"; }\r
- String sepForm() { return "|"; }\r
- public Or addOr(Pattern p) {\r
- pv = null;\r
- v.addElement(p);\r
- p.setParent(this);\r
- return this;\r
+class Or\r
+ extends Pattern\r
+{\r
+ Vector v;\r
+ Pattern[] pv = null;\r
+ Or()\r
+ {\r
+ v = new Vector();\r
+ }\r
+\r
+ String leftForm()\r
+ {\r
+ return "(?:";\r
+ }\r
+\r
+ String rightForm()\r
+ {\r
+ return ")";\r
+ }\r
+\r
+ String sepForm()\r
+ {\r
+ return "|";\r
+ }\r
+\r
+ public Or addOr(Pattern p)\r
+ {\r
+ pv = null;\r
+ v.addElement(p);\r
+ p.setParent(this);\r
+ return this;\r
+ }\r
+\r
+ public String toString()\r
+ {\r
+ int i;\r
+ StringBuffer sb = new StringBuffer();\r
+ sb.append(leftForm());\r
+ if (v.size() > 0)\r
+ {\r
+ sb.append( ( (Pattern) v.elementAt(0)).toString());\r
+ }\r
+ for (i = 1; i < v.size(); i++)\r
+ {\r
+ sb.append(sepForm());\r
+ sb.append( ( (Pattern) v.elementAt(i)).toString());\r
}\r
- public String toString() {\r
- int i;\r
- StringBuffer sb = new StringBuffer();\r
- sb.append(leftForm());\r
- if(v.size()>0)\r
- sb.append( ((Pattern)v.elementAt(0)).toString() );\r
- for(i=1;i<v.size();i++) {\r
- sb.append(sepForm());\r
- sb.append( ((Pattern)v.elementAt(i)).toString() );\r
- }\r
- sb.append(rightForm());\r
- sb.append(nextString());\r
- return sb.toString();\r
+ sb.append(rightForm());\r
+ sb.append(nextString());\r
+ return sb.toString();\r
+ }\r
+\r
+ public int matchInternal(int pos, Pthings pt)\r
+ {\r
+ if (pv == null)\r
+ {\r
+ pv = new Pattern[v.size()];\r
+ v.copyInto(pv);\r
+ }\r
+ for (int i = 0; i < v.size(); i++)\r
+ {\r
+ Pattern p = pv[i]; //(Pattern)v.elementAt(i);\r
+ int r = p.matchInternal(pos, pt);\r
+ if (r >= 0)\r
+ {\r
+ return r;\r
+ }\r
+ }\r
+ return -1;\r
+ }\r
+\r
+ public patInt minChars()\r
+ {\r
+ if (v.size() == 0)\r
+ {\r
+ return new patInt(0);\r
}\r
- public int matchInternal(int pos,Pthings pt) {\r
- if(pv == null) {\r
- pv = new Pattern[v.size()];\r
- v.copyInto(pv);\r
- }\r
- for(int i=0;i<v.size();i++) {\r
- Pattern p = pv[i];//(Pattern)v.elementAt(i);\r
- int r = p.matchInternal(pos,pt);\r
- if(r >= 0)\r
- return r;\r
- }\r
- return -1;\r
+ patInt m = ( (Pattern) v.elementAt(0)).countMinChars();\r
+ for (int i = 1; i < v.size(); i++)\r
+ {\r
+ Pattern p = (Pattern) v.elementAt(i);\r
+ m.mineq(p.countMinChars());\r
}\r
- public patInt minChars() {\r
- if(v.size()==0) return new patInt(0);\r
- patInt m = ((Pattern)v.elementAt(0)).countMinChars();\r
- for(int i=1;i<v.size();i++) {\r
- Pattern p = (Pattern)v.elementAt(i);\r
- m.mineq(p.countMinChars());\r
- }\r
- return m;\r
+ return m;\r
+ }\r
+\r
+ public patInt maxChars()\r
+ {\r
+ if (v.size() == 0)\r
+ {\r
+ return new patInt(0);\r
}\r
- public patInt maxChars() {\r
- if(v.size()==0) return new patInt(0);\r
- patInt m = ((Pattern)v.elementAt(0)).countMaxChars();\r
- for(int i=1;i<v.size();i++) {\r
- Pattern p = (Pattern)v.elementAt(i);\r
- m.maxeq(p.countMaxChars());\r
- }\r
- return m;\r
+ patInt m = ( (Pattern) v.elementAt(0)).countMaxChars();\r
+ for (int i = 1; i < v.size(); i++)\r
+ {\r
+ Pattern p = (Pattern) v.elementAt(i);\r
+ m.maxeq(p.countMaxChars());\r
}\r
- Pattern clone1(Hashtable h) {\r
- Or o=new Or();\r
- h.put(this,o);\r
- h.put(o,o);\r
- for(int i=0;i<v.size();i++)\r
- o.v.addElement( ((Pattern)v.elementAt(i)).clone(h) );\r
- return o;\r
+ return m;\r
+ }\r
+\r
+ Pattern clone1(Hashtable h)\r
+ {\r
+ Or o = new Or();\r
+ h.put(this, o);\r
+ h.put(o, o);\r
+ for (int i = 0; i < v.size(); i++)\r
+ {\r
+ o.v.addElement( ( (Pattern) v.elementAt(i)).clone(h));\r
}\r
+ return o;\r
+ }\r
};\r