summaryrefslogtreecommitdiffstats
path: root/pki/base/silent/src/argparser/StringScanner.java
diff options
context:
space:
mode:
authoradmiyo <admiyo@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2011-11-17 00:02:59 +0000
committeradmiyo <admiyo@c9f7a03b-bd48-0410-a16d-cbbf54688b0b>2011-11-17 00:02:59 +0000
commited76e714f94e8aa60aa5c4b4a8cf386a582bf02d (patch)
treeaa6199e43693f5bc0e95e69e3baf4dca2014005a /pki/base/silent/src/argparser/StringScanner.java
parent0f0d937b1caec10a3487bd1f36075a57411bc63a (diff)
PKISilent in single tree PKISilent was a series of classes, each in the Common namespace. Now it is in a single tree and fronted by a single Java class that multiplexes between them.
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@2295 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
Diffstat (limited to 'pki/base/silent/src/argparser/StringScanner.java')
-rw-r--r--pki/base/silent/src/argparser/StringScanner.java650
1 files changed, 0 insertions, 650 deletions
diff --git a/pki/base/silent/src/argparser/StringScanner.java b/pki/base/silent/src/argparser/StringScanner.java
deleted file mode 100644
index 425ad3ac1..000000000
--- a/pki/base/silent/src/argparser/StringScanner.java
+++ /dev/null
@@ -1,650 +0,0 @@
-// --- BEGIN COPYRIGHT BLOCK ---
-// This program 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; version 2 of the License.
-//
-// This program 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 this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// (C) 2007 Red Hat, Inc.
-// All rights reserved.
-// --- END COPYRIGHT BLOCK ---
-
-/**
- * Copyright John E. Lloyd, 2004. All rights reserved. Permission to use,
- * copy, modify and redistribute is granted, provided that this copyright
- * notice is retained and the author is given credit whenever appropriate.
- *
- * This software is distributed "as is", without any warranty, including
- * any implied warranty of merchantability or fitness for a particular
- * use. The author assumes no responsibility for, and shall not be liable
- * for, any special, indirect, or consequential damages, or any damages
- * whatsoever, arising out of or in connection with the use of this
- * software.
- */
-
-class StringScanner
-{
- private char[] buf;
- private int idx;
- private int len;
- private String stringDelimiters = "";
-
- public StringScanner (String s)
- {
- buf = new char[s.length()+1];
- s.getChars (0, s.length(), buf, 0);
- len = s.length();
- buf[len] = 0;
- idx = 0;
- }
-
- public int getIndex()
- { return idx;
- }
-
- public void setIndex(int i)
- { if (i < 0)
- { idx = 0;
- }
- else if (i > len)
- { idx = len;
- }
- else
- { idx = i;
- }
- }
-
- public void setStringDelimiters (String s)
- { stringDelimiters = s;
- }
-
- public String getStringDelimiters()
- { return stringDelimiters;
- }
-
- public char scanChar ()
- throws StringScanException
- {
- int idxSave = idx;
- skipWhiteSpace();
- try
- { if (buf[idx] == '\'')
- { return scanQuotedChar();
- }
- else
- { return scanUnquotedChar();
- }
- }
- catch (StringScanException e)
- { idx = idxSave;
- throw e;
- }
- }
-
- public char scanQuotedChar ()
- throws StringScanException
- {
- StringScanException exception = null;
- char retval = 0;
- int idxSave = idx;
-
- skipWhiteSpace();
- if (idx == len)
- { exception = new StringScanException (idx, "end of input");
- }
- else if (buf[idx++] == '\'')
- { try
- { retval = scanUnquotedChar();
- }
- catch (StringScanException e)
- { exception = e;
- }
- if (exception==null)
- { if (idx==len)
- { exception = new StringScanException
- (idx, "end of input");
- }
- else if (buf[idx++] != '\'')
- { exception = new StringScanException
- (idx-1, "unclosed quoted character");
- }
- }
- }
- else
- { exception = new StringScanException
- (idx-1, "uninitialized quoted character");
- }
- if (exception!=null)
- { idx = idxSave;
- throw exception;
- }
- return retval;
- }
-
- public char scanUnquotedChar ()
- throws StringScanException
- {
- StringScanException exception = null;
- char c, retval = 0;
- int idxSave = idx;
-
- if (idx == len)
- { exception = new StringScanException (idx, "end of input");
- }
- else if ((c = buf[idx++]) == '\\')
- { if (idx == len)
- { exception = new StringScanException (idx, "end of input");
- }
- else
- {
- c = buf[idx++];
- if (c == '"')
- { retval = '"';
- }
- else if (c == '\'')
- { retval = '\'';
- }
- else if (c == '\\')
- { retval = '\\';
- }
- else if (c == 'n')
- { retval = '\n';
- }
- else if (c == 't')
- { retval = '\t';
- }
- else if (c == 'b')
- { retval = '\b';
- }
- else if (c == 'r')
- { retval = '\r';
- }
- else if (c == 'f')
- { retval = '\f';
- }
- else if ('0' <= c && c < '8')
- { int v = c - '0';
- for (int j=0; j<2; j++)
- { if (idx==len)
- { break;
- }
- c = buf[idx];
- if ('0' <= c && c < '8' && (v*8 + (c-'0')) <= 255)
- { v = v*8 + (c-'0');
- idx++;
- }
- else
- { break;
- }
- }
- retval = (char)v;
- }
- else
- { exception = new StringScanException
- (idx-1, "illegal escape character '" + c + "'");
- }
- }
- }
- else
- { retval = c;
- }
- if (exception!=null)
- { idx = idxSave;
- throw exception;
- }
- return retval;
- }
-
- public String scanQuotedString ()
- throws StringScanException
- {
- StringScanException exception = null;
- StringBuffer sbuf = new StringBuffer(len);
- char c;
- int idxSave = idx;
-
- skipWhiteSpace();
- if (idx == len)
- { exception = new StringScanException (idx, "end of input");
- }
- else if ((c=buf[idx++]) == '"')
- { while (idx<len && (c=buf[idx]) != '"' && c != '\n')
- { if (c == '\\')
- { try
- { c = scanUnquotedChar();
- }
- catch (StringScanException e)
- { exception = e;
- break;
- }
- }
- else
- { idx++;
- }
- sbuf.append (c);
- }
- if (exception == null && idx>=len)
- { exception = new StringScanException (len, "end of input");
- }
- else if (exception == null && c == '\n')
- { exception = new StringScanException
- (idx, "unclosed quoted string");
- }
- else
- { idx++;
- }
- }
- else
- { exception = new StringScanException (idx-1,
-"quoted string must start with \"");
- }
- if (exception != null)
- { idx = idxSave;
- throw exception;
- }
- return sbuf.toString();
- }
-
- public String scanNonWhiteSpaceString()
- throws StringScanException
- {
- StringBuffer sbuf = new StringBuffer(len);
- int idxSave = idx;
- char c;
-
- skipWhiteSpace();
- if (idx == len)
- { StringScanException e = new StringScanException (
- idx, "end of input");
- idx = idxSave;
- throw e;
- }
- else
- { c = buf[idx++];
- while (idx<len && !Character.isWhitespace(c)
- && stringDelimiters.indexOf(c) == -1)
- { sbuf.append(c);
- c = buf[idx++];
- }
- if (Character.isWhitespace(c) ||
- stringDelimiters.indexOf(c) != -1)
- { idx--;
- }
- else
- { sbuf.append(c);
- }
- }
- return sbuf.toString();
- }
-
- public String scanString ()
- throws StringScanException
- {
- int idxSave = idx;
- skipWhiteSpace();
- try
- { if (buf[idx] == '"')
- { return scanQuotedString();
- }
- else
- { return scanNonWhiteSpaceString();
- }
- }
- catch (StringScanException e)
- { idx = idxSave;
- throw e;
- }
- }
-
- public String getString ()
- throws StringScanException
- {
- StringBuffer sbuf = new StringBuffer(len);
- while (idx < len)
- { sbuf.append (buf[idx++]);
- }
- return sbuf.toString();
- }
-
- public long scanInt ()
- throws StringScanException
- {
- int idxSave = idx;
- char c;
- int sign = 1;
-
- skipWhiteSpace();
- if ((c=buf[idx]) == '-' || c == '+')
- { sign = (c == '-' ? -1 : 1);
- idx++;
- }
- try
- { if (idx==len)
- { throw new StringScanException (len, "end of input");
- }
- else if ((c=buf[idx]) == '0')
- { if ((c=buf[idx+1]) == 'x' || c == 'X')
- { idx += 2;
- return sign*scanInt (16, false);
- }
- else
- { return sign*scanInt (8, false);
- }
- }
- else
- { return sign*scanInt (10, false);
- }
- }
- catch (StringScanException e)
- { idx = idxSave;
- throw e;
- }
- }
-
- public long scanInt (int radix)
- throws StringScanException
- {
- return scanInt (radix, /*skipWhite=*/true);
- }
-
- private String baseDesc (int radix)
- {
- switch (radix)
- { case 10:
- { return "decimal";
- }
- case 8:
- { return "octal";
- }
- case 16:
- { return "hex";
- }
- default:
- { return "base " + radix;
- }
- }
- }
-
- public long scanInt (int radix, boolean skipWhite)
- throws StringScanException
- {
- StringScanException exception = null;
- int charval, idxSave = idx;
- char c;
- long val = 0;
- boolean negate = false;
-
- if (skipWhite)
- { skipWhiteSpace();
- }
- if ((c=buf[idx]) == '-' || c == '+')
- { negate = (c == '-');
- idx++;
- }
- if (idx >= len)
- { exception = new StringScanException (len, "end of input");
- }
- else if ((charval=Character.digit(buf[idx++],radix)) == -1)
- { exception = new StringScanException
- (idx-1, "malformed " + baseDesc(radix) + " integer");
- }
- else
- { val = charval;
- while ((charval=Character.digit(buf[idx],radix)) != -1)
- { val = val*radix + charval;
- idx++;
- }
- if (Character.isLetter(c=buf[idx]) ||
- Character.isDigit(c) || c == '_')
- { exception = new StringScanException
- (idx, "malformed " + baseDesc(radix) + " integer");
- }
- }
- if (exception != null)
- { idx = idxSave;
- throw exception;
- }
- return negate ? -val : val;
- }
-
- public double scanDouble ()
- throws StringScanException
- {
- StringScanException exception = null;
- int idxSave = idx;
- char c;
- // parse [-][0-9]*[.][0-9]*[eE][-][0-9]*
- boolean hasDigits = false;
- boolean signed;
- double value = 0;
-
- skipWhiteSpace();
- if (idx == len)
- { exception = new StringScanException ("end of input");
- }
- else
- {
- if ((c=buf[idx]) == '-' || c == '+')
- { signed = true;
- idx++;
- }
- if (matchDigits())
- { hasDigits = true;
- }
- if (buf[idx] == '.')
- { idx++;
- }
- if (!hasDigits && (buf[idx] < '0' || buf[idx] > '9'))
- { if (idx==len)
- { exception = new StringScanException (idx, "end of input");
- }
- else
- { exception = new StringScanException (
- idx, "malformed floating number: no digits");
- }
- }
- else
- { matchDigits();
-
- if ((c=buf[idx]) == 'e' || c == 'E')
- { idx++;
- if ((c=buf[idx]) == '-' || c == '+')
- { signed = true;
- idx++;
- }
- if (buf[idx] < '0' || buf[idx] > '9')
- { if (idx==len)
- { exception = new StringScanException(
- idx, "end of input");
- }
- else
- { exception = new StringScanException (idx,
-"malformed floating number: no digits in exponent");
- }
- }
- else
- { matchDigits();
- }
- }
- }
- }
- if (exception == null)
- {
-// if (Character.isLetterOrDigit(c=buf[idx]) || c == '_')
-// { exception = new StringScanException (idx,
-//"malformed floating number");
-// }
-// else
- {
- try
- { value = Double.parseDouble(new String(buf, idxSave,
- idx-idxSave));
- }
- catch (NumberFormatException e)
- { exception = new StringScanException (
- idx, "malformed floating number");
- }
- }
- }
- if (exception != null)
- { idx = idxSave;
- throw exception;
- }
- return value;
- }
-
- public boolean scanBoolean ()
- throws StringScanException
- {
- StringScanException exception = null;
- int idxSave = idx;
- String testStr = "false";
- boolean testval = false;
- char c;
-
- skipWhiteSpace();
- if (buf[idx] == 't')
- { testStr = "true";
- testval = true;
- }
- else
- { testval = false;
- }
- int i = 0;
- for (i=0; i<testStr.length(); i++)
- { if (testStr.charAt(i) != buf[idx])
- { if (idx==len)
- { exception = new StringScanException (idx, "end of input");
- }
- break;
- }
- idx++;
- }
- if (exception==null)
- { if (i<testStr.length() ||
- Character.isLetterOrDigit(c=buf[idx]) || c == '_')
- { exception = new StringScanException (idx, "illegal boolean");
- }
- }
- if (exception != null)
- { idx = idxSave;
- throw exception;
- }
- return testval;
- }
-
- public boolean matchString (String s)
- {
- int k = idx;
- for (int i=0; i<s.length(); i++)
- { if (k >= len || s.charAt(i) != buf[k++])
- { return false;
- }
- }
- idx = k;
- return true;
- }
-
- public boolean matchDigits ()
- {
- int k = idx;
- char c;
-
- while ((c=buf[k]) >= '0' && c <= '9')
- { k++;
- }
- if (k > idx)
- { idx = k;
- return true;
- }
- else
- { return false;
- }
- }
-
- public void skipWhiteSpace()
- {
- while (Character.isWhitespace(buf[idx]))
- { idx++;
- }
- }
-
- private int skipWhiteSpace(int k)
- {
- while (Character.isWhitespace(buf[k]))
- { k++;
- }
- return k;
- }
-
- public boolean atEnd()
- {
- return idx == len;
- }
-
- public boolean atBeginning()
- {
- return idx == 0;
- }
-
- public void ungetc()
- {
- if (idx > 0)
- { idx--;
- }
- }
-
- public char getc()
- {
- char c = buf[idx];
- if (idx < len)
- { idx++;
- }
- return c;
- }
-
- public char peekc()
- {
- return buf[idx];
- }
-
- public String substring (int i0, int i1)
- {
- if (i0 < 0)
- { i0 = 0;
- }
- else if (i0 >= len)
- { i0= len-1;
- }
- if (i1 < 0)
- { i1 = 0;
- }
- else if (i1 > len)
- { i1= len;
- }
- if (i1 <= i0)
- { return "";
- }
- return new String (buf, i0, i1-i0);
- }
-
- public String substring (int i0)
- {
- if (i0 < 0)
- { i0 = 0;
- }
- if (i0 >= len)
- { return "";
- }
- else
- { return new String (buf, i0, len-i0);
- }
- }
-}