Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.thaiopensource.validate.nrl;
  
  
  import java.util.Vector;
  
  class Path {
    private final boolean root;
    private final Vector names;
 
   Path(boolean rootVector names) {
     this. = root;
     this. = names;
   }
 
   boolean isRoot() {
     return ;
   }
 
   Vector getNames() {
     return ;
   }
 
   public String toString() {
     StringBuffer buf = new StringBuffer();
     if ()
       buf.append('/');
     for (int i = 0, len = .size(); i < leni++) {
       if (i != 0)
         buf.append('/');
       buf.append((String).elementAt(i));
     }
     return buf.toString();
   }
 
   static class ParseException extends Exception {
     private final String messageKey;
 
     ParseException(String messageKey) {
       super(messageKey);
       this. = messageKey;
     }
 
     public String getMessageKey() {
       return ;
     }
   }
 
   private static final int START = 0;
   private static final int IN_NAME = 1;
   private static final int AFTER_NAME = 2;
   private static final int AFTER_SLASH = 3;
 
   static Vector parse(String strthrows ParseException {
     int state = ;
     int nameStartIndex = -1;
     Vector paths = new Vector();
     Vector names = new Vector();
     boolean root = false;
     for (int i = 0, len = str.length(); i < leni++) {
       char c = str.charAt(i);
       switch (c) {
       case ' ':
       case '\r':
       case '\n':
       case '\t':
         if (state == ) {
           names.addElement(makeName(strnameStartIndexi));
           state = ;
         }
         break;
       case '/':
         switch (state) {
         case :
           names.addElement(makeName(strnameStartIndexi));
           break;
         case :
           root = true;
           break;
         case :
           throw new ParseException("unexpected_slash");
         }
         state = ;
         break;
       case '|':
         switch (state) {
         case :
           throw new ParseException("empty_path");
         case :
           break;
         case :
           throw new ParseException("expected_name");
         case :
           names.addElement(makeName(strnameStartIndexi));
           break;
         }
         paths.addElement(new Path(rootnames));
         root = false;
         names = new Vector();
        state = ;
        break;
      default:
        switch (state) {
        case :
          throw new ParseException("expected_slash");
        case :
        case :
          nameStartIndex = i;
          state = ;
          break;
        case :
          break;
        }
        break;
      }
    }
    switch (state) {
    case :
      throw new ParseException("empty_path");
    case :
      break;
    case :
      throw new ParseException("expected_name");
    case :
      names.addElement(makeName(strnameStartIndexstr.length()));
      break;
    }
    paths.addElement(new Path(rootnames));
    return paths;
  }
  private static String makeName(String strint startint endthrows ParseException {
    String name = str.substring(startend);
    if (!Naming.isNcname(name))
      throw new ParseException("invalid_name");
    return name;
  }
  static public void main(String[] argsthrows ParseException {
    Vector paths = parse(args[0]);
    for (int i = 0; i < paths.size(); i++) {
      if (i != 0)
        ..println("---");
      Path path = (Path)paths.elementAt(i);
      if (path.isRoot())
        ..println("/");
      for (int j = 0; j < path.getNames().size(); j++)
        ..println(path.getNames().elementAt(j));
    }
  }
New to GrepCode? Check out our FAQ X