-/*\r
- * Copyright (C) 2001, 2002 The Mir-coders group\r
- *\r
- * This file is part of Mir.\r
- *\r
- * Mir is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * Mir is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with Mir; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
- *\r
- * In addition, as a special exception, The Mir-coders gives permission to link\r
- * the code of this program with the com.oreilly.servlet library, any library\r
- * licensed under the Apache Software License, The Sun (tm) Java Advanced\r
- * Imaging library (JAI), The Sun JIMI library (or with modified versions of\r
- * the above that use the same license as the above), and distribute linked\r
- * combinations including the two. You must obey the GNU General Public\r
- * License in all respects for all of the code used other than the above\r
- * mentioned libraries. If you modify this file, you may extend this exception\r
- * to your version of the file, but you are not obligated to do so. If you do\r
- * not wish to do so, delete this exception statement from your version.\r
- */\r
-\r
-package mir.util;\r
-\r
-import gnu.regexp.RE;\r
-import gnu.regexp.REException;\r
-import gnu.regexp.REMatch;\r
-import multex.Exc;\r
-import multex.Failure;\r
-\r
-/**\r
- * a class to do some basic, regexp based parsing of character data\r
- *\r
- * <p>Title: </p>\r
- * <p>Description: </p>\r
- * <p>Copyright: Copyright (c) 2003</p>\r
- * <p>Company: </p>\r
- * @author not attributable\r
- * @version 1.0\r
- */\r
-\r
-public class SimpleParser {\r
- private String data;\r
- private int position;\r
-\r
- /**\r
- *\r
- * @param aData\r
- */\r
-\r
- public SimpleParser(String aData) {\r
- data=aData;\r
- position=0;\r
- }\r
-\r
- /**\r
- *\r
- * @param aRegularExpression\r
- * @return\r
- * @throws SimpleParserExc\r
- */\r
-\r
- public boolean parses(RE aRegularExpression) throws SimpleParserExc {\r
- REMatch match = aRegularExpression.getMatch(data, position);\r
-\r
- return (match!=null && match.getStartIndex()==position) ;\r
- }\r
-\r
- /**\r
- *\r
- * @param aRegularExpression\r
- * @param aMessage\r
- * @return\r
- * @throws SimpleParserExc\r
- */\r
-\r
- public String parse(RE aRegularExpression, String aMessage) throws SimpleParserExc {\r
- REMatch match = aRegularExpression.getMatch(data, position);\r
-\r
- if (match==null || match.getStartIndex()!=position)\r
- throw new SimpleParserExc(aMessage+" at position "+position+" in '"+data+"'");\r
-\r
- position=match.getEndIndex();\r
-\r
- return match.toString();\r
- }\r
-\r
- /**\r
- *\r
- * @param aRegularExpression\r
- * @return\r
- * @throws SimpleParserExc\r
- */\r
-\r
- public String parse(RE aRegularExpression) throws SimpleParserExc {\r
- return parse( aRegularExpression, "No match found for '"+aRegularExpression.toString()+"'");\r
- }\r
-\r
- /**\r
- *\r
- * @param aRegularExpression\r
- * @throws SimpleParserExc\r
- */\r
-\r
- public void skip(RE aRegularExpression) throws SimpleParserExc {\r
- REMatch match = aRegularExpression.getMatch(data, position);\r
-\r
- if (match!=null && match.getStartIndex()==position)\r
- position=match.getEndIndex();\r
- }\r
-\r
- /**\r
- *\r
- * @param anExpression\r
- * @return\r
- * @throws SimpleParserExc\r
- */\r
-\r
- public boolean parses(String anExpression) throws SimpleParserExc {\r
- try {\r
- return parses(new RE(anExpression));\r
- }\r
- catch (SimpleParserExc e) {\r
- throw e;\r
- }\r
- catch (REException e) {\r
- throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);\r
- }\r
- catch (Throwable t) {\r
- throw new SimpleParserFailure( t );\r
- }\r
- }\r
-\r
- /**\r
- *\r
- * @param anExpression\r
- * @return\r
- * @throws SimpleParserExc\r
- * @throws SimpleParserFailure\r
- */\r
-\r
- public String parse(String anExpression) throws SimpleParserExc, SimpleParserFailure {\r
- try {\r
- return parse(new RE(anExpression));\r
- }\r
- catch (SimpleParserExc e) {\r
- throw e;\r
- }\r
- catch (REException e) {\r
- throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);\r
- }\r
- catch (Throwable t) {\r
- throw new SimpleParserFailure( t );\r
- }\r
- }\r
-\r
- /**\r
- *\r
- * @param anExpression\r
- * @param aMessage\r
- * @return\r
- * @throws SimpleParserExc\r
- * @throws SimpleParserFailure\r
- */\r
-\r
- public String parse(String anExpression, String aMessage) throws SimpleParserExc, SimpleParserFailure {\r
- try {\r
- return parse(new RE(anExpression), aMessage);\r
- }\r
- catch (SimpleParserExc e) {\r
- throw e;\r
- }\r
- catch (REException e) {\r
- throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);\r
- }\r
- catch (Throwable t) {\r
- throw new SimpleParserFailure( t );\r
- }\r
- }\r
-\r
- /**\r
- *\r
- * @param anExpression\r
- * @throws SimpleParserExc\r
- * @throws SimpleParserFailure\r
- */\r
-\r
- public void skip(String anExpression) throws SimpleParserExc, SimpleParserFailure {\r
- try {\r
- skip(new RE(anExpression));\r
- }\r
- catch (SimpleParserExc e) {\r
- throw e;\r
- }\r
- catch (REException e) {\r
- throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);\r
- }\r
- catch (Throwable t) {\r
- throw new SimpleParserFailure( t );\r
- }\r
- }\r
-\r
- /**\r
- *\r
- * @return true if the parser is at the end of the data\r
- */\r
-\r
- public boolean isAtEnd() {\r
- return position>=data.length();\r
- }\r
-\r
- /**\r
- *\r
- * @return\r
- */\r
- public String remainingData() {\r
- return data.substring(position);\r
- }\r
-\r
- /**\r
- *\r
- * <p>Title: </p>\r
- * <p>Description: </p>\r
- * <p>Copyright: Copyright (c) 2003</p>\r
- * <p>Company: </p>\r
- * @author not attributable\r
- * @version 1.0\r
- */\r
-\r
- public static class SimpleParserFailure extends Failure {\r
- public SimpleParserFailure(Throwable aThrowable) {\r
- super(aThrowable.getMessage(), aThrowable);\r
- }\r
-\r
- public SimpleParserFailure(String aMessage, Throwable aThrowable) {\r
- super(aMessage, aThrowable);\r
- }\r
- }\r
-\r
- public static class SimpleParserExc extends Exc {\r
- public SimpleParserExc(String aMessage) {\r
- super(aMessage);\r
- }\r
- }\r
+/*
+ * Copyright (C) 2001, 2002 The Mir-coders group
+ *
+ * This file is part of Mir.
+ *
+ * Mir is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Mir is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Mir; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * In addition, as a special exception, The Mir-coders gives permission to link
+ * the code of this program with any library licensed under the Apache Software License,
+ * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
+ * (or with modified versions of the above that use the same license as the above),
+ * and distribute linked combinations including the two. You must obey the
+ * GNU General Public License in all respects for all of the code used other than
+ * the above mentioned libraries. If you modify this file, you may extend this
+ * exception to your version of the file, but you are not obligated to do so.
+ * If you do not wish to do so, delete this exception statement from your version.
+ */
+
+package mir.util;
+
+import gnu.regexp.RE;
+import gnu.regexp.REException;
+import gnu.regexp.REMatch;
+import multex.Exc;
+import multex.Failure;
+
+/**
+ * a class to do some basic, regexp based parsing of character data
+ *
+ * <p>Title: </p>
+ * <p>Description: </p>
+ * <p>Copyright: Copyright (c) 2003</p>
+ * <p>Company: </p>
+ * @author not attributable
+ * @version 1.0
+ */
+
+public class SimpleParser {
+ private String data;
+ private int position;
+
+ /**
+ *
+ * @param aData
+ */
+
+ public SimpleParser(String aData) {
+ data=aData;
+ position=0;
+ }
+
+ /**
+ *
+ * @param aRegularExpression
+ * @return
+ * @throws SimpleParserExc
+ */
+
+ public boolean parses(RE aRegularExpression) throws SimpleParserExc {
+ REMatch match = aRegularExpression.getMatch(data, position);
+
+ return (match!=null && match.getStartIndex()==position) ;
+ }
+
+ /**
+ *
+ * @param aRegularExpression
+ * @param aMessage
+ * @return
+ * @throws SimpleParserExc
+ */
+
+ public String parse(RE aRegularExpression, String aMessage) throws SimpleParserExc {
+ REMatch match = aRegularExpression.getMatch(data, position);
+
+ if (match==null || match.getStartIndex()!=position)
+ throw new SimpleParserExc(aMessage+" at position "+position+" in '"+data+"'");
+
+ position=match.getEndIndex();
+
+ return match.toString();
+ }
+
+ /**
+ *
+ * @param aRegularExpression
+ * @return
+ * @throws SimpleParserExc
+ */
+
+ public String parse(RE aRegularExpression) throws SimpleParserExc {
+ return parse( aRegularExpression, "No match found for '"+aRegularExpression.toString()+"'");
+ }
+
+ /**
+ *
+ * @param aRegularExpression
+ * @throws SimpleParserExc
+ */
+
+ public void skip(RE aRegularExpression) throws SimpleParserExc {
+ REMatch match = aRegularExpression.getMatch(data, position);
+
+ if (match!=null && match.getStartIndex()==position)
+ position=match.getEndIndex();
+ }
+
+ /**
+ *
+ * @param anExpression
+ * @return
+ * @throws SimpleParserExc
+ */
+
+ public boolean parses(String anExpression) throws SimpleParserExc {
+ try {
+ return parses(new RE(anExpression));
+ }
+ catch (SimpleParserExc e) {
+ throw e;
+ }
+ catch (REException e) {
+ throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);
+ }
+ catch (Throwable t) {
+ throw new SimpleParserFailure( t );
+ }
+ }
+
+ /**
+ *
+ * @param anExpression
+ * @return
+ * @throws SimpleParserExc
+ * @throws SimpleParserFailure
+ */
+
+ public String parse(String anExpression) throws SimpleParserExc, SimpleParserFailure {
+ try {
+ return parse(new RE(anExpression));
+ }
+ catch (SimpleParserExc e) {
+ throw e;
+ }
+ catch (REException e) {
+ throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);
+ }
+ catch (Throwable t) {
+ throw new SimpleParserFailure( t );
+ }
+ }
+
+ /**
+ *
+ * @param anExpression
+ * @param aMessage
+ * @return
+ * @throws SimpleParserExc
+ * @throws SimpleParserFailure
+ */
+
+ public String parse(String anExpression, String aMessage) throws SimpleParserExc, SimpleParserFailure {
+ try {
+ return parse(new RE(anExpression), aMessage);
+ }
+ catch (SimpleParserExc e) {
+ throw e;
+ }
+ catch (REException e) {
+ throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);
+ }
+ catch (Throwable t) {
+ throw new SimpleParserFailure( t );
+ }
+ }
+
+ /**
+ *
+ * @param anExpression
+ * @throws SimpleParserExc
+ * @throws SimpleParserFailure
+ */
+
+ public void skip(String anExpression) throws SimpleParserExc, SimpleParserFailure {
+ try {
+ skip(new RE(anExpression));
+ }
+ catch (SimpleParserExc e) {
+ throw e;
+ }
+ catch (REException e) {
+ throw new SimpleParserFailure( "Error compiling regular expression '" + anExpression + "': " + e.getMessage(), e);
+ }
+ catch (Throwable t) {
+ throw new SimpleParserFailure( t );
+ }
+ }
+
+ /**
+ *
+ * @return true if the parser is at the end of the data
+ */
+
+ public boolean isAtEnd() {
+ return position>=data.length();
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String remainingData() {
+ return data.substring(position);
+ }
+
+ /**
+ *
+ * <p>Title: </p>
+ * <p>Description: </p>
+ * <p>Copyright: Copyright (c) 2003</p>
+ * <p>Company: </p>
+ * @author not attributable
+ * @version 1.0
+ */
+
+ public static class SimpleParserFailure extends Failure {
+ public SimpleParserFailure(Throwable aThrowable) {
+ super(aThrowable.getMessage(), aThrowable);
+ }
+
+ public SimpleParserFailure(String aMessage, Throwable aThrowable) {
+ super(aMessage, aThrowable);
+ }
+ }
+
+ public static class SimpleParserExc extends Exc {
+ public SimpleParserExc(String aMessage) {
+ super(aMessage);
+ }
+ }
}
\ No newline at end of file