X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmir%2Futil%2FSimpleParser.java;h=975dd3d7fedea80948e1389b7fb919342aea6a74;hb=7a816660e1c84fa8073232c6184edd19a0a18e10;hp=8c4a5cb7698dc5e0ec34c34a47143b231508bfda;hpb=781ae5e450f0fdc85d3ee5b4b586aa542611a562;p=mir.git diff --git a/source/mir/util/SimpleParser.java b/source/mir/util/SimpleParser.java index 8c4a5cb7..975dd3d7 100755 --- a/source/mir/util/SimpleParser.java +++ b/source/mir/util/SimpleParser.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002 The Mir-coders group + * Copyright (C) 2001, 2002 The Mir-coders group * * This file is part of Mir. * @@ -18,41 +18,70 @@ * 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 the com.oreilly.servlet library, 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. + * 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 java.util.*; -import gnu.regexp.*; +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 + * + *

Title:

+ *

Description:

+ *

Copyright: Copyright (c) 2003

+ *

Company:

+ * @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; - - System.out.println("Will parse: "+aData); } + /** + * + * @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); @@ -64,10 +93,23 @@ public class SimpleParser { 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); @@ -75,6 +117,13 @@ public class SimpleParser { position=match.getEndIndex(); } + /** + * + * @param anExpression + * @return + * @throws SimpleParserExc + */ + public boolean parses(String anExpression) throws SimpleParserExc { try { return parses(new RE(anExpression)); @@ -90,6 +139,14 @@ public class SimpleParser { } } + /** + * + * @param anExpression + * @return + * @throws SimpleParserExc + * @throws SimpleParserFailure + */ + public String parse(String anExpression) throws SimpleParserExc, SimpleParserFailure { try { return parse(new RE(anExpression)); @@ -105,10 +162,17 @@ public class SimpleParser { } } + /** + * + * @param anExpression + * @param aMessage + * @return + * @throws SimpleParserExc + * @throws SimpleParserFailure + */ + public String parse(String anExpression, String aMessage) throws SimpleParserExc, SimpleParserFailure { try { - System.out.println("Expression: "+anExpression); - return parse(new RE(anExpression), aMessage); } catch (SimpleParserExc e) { @@ -122,6 +186,13 @@ public class SimpleParser { } } + /** + * + * @param anExpression + * @throws SimpleParserExc + * @throws SimpleParserFailure + */ + public void skip(String anExpression) throws SimpleParserExc, SimpleParserFailure { try { skip(new RE(anExpression)); @@ -136,10 +207,34 @@ public class SimpleParser { 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); + } + + /** + * + *

Title:

+ *

Description:

+ *

Copyright: Copyright (c) 2003

+ *

Company:

+ * @author not attributable + * @version 1.0 + */ + public static class SimpleParserFailure extends Failure { public SimpleParserFailure(Throwable aThrowable) { super(aThrowable.getMessage(), aThrowable);