📄 commandline.java
字号:
// CommandLine.java// $Id: CommandLine.java,v 1.7 2002/02/04 17:28:12 cbournez Exp $// (c) COPYRIGHT MIT and INRIA, 2002.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.tools.offline.command;import java.io.StringReader;import java.io.StreamTokenizer;import java.io.IOException;import java.util.Vector;import org.apache.oro.text.regex.Perl5Matcher;import org.apache.oro.text.regex.Perl5Compiler;import org.apache.oro.text.regex.Pattern;import org.apache.oro.text.regex.MalformedPatternException;/** * <p>The jigshell command line class. */public class CommandLine { /** static members: jigshell commands syntax */ public static String WHERE = "where"; public static String LIST = "list"; public static String GO = "go" ; public static String REC = "r" ; public static String ATTR = "a" ; public static String UP = ".." ; public static String NO_OPT = "none" ; /* private class members */ private String cmd = null ; private String action = null ; private String target = null ; private String option = NO_OPT ; /** * a Vector to handle elements of a parsed command */ protected Vector parsedCmd ; /* protected static members */ protected static Perl5Matcher pmatcher = new Perl5Matcher() ; protected static Perl5Compiler pcompiler = new Perl5Compiler() ; protected static Pattern srPattern ; /** * Initialize a CommandLine instance. * @param s the command line. */ public CommandLine(String s){ try { cmd = s ; parsedCmd = new Vector (); srPattern = pcompiler.compile( "^s/[\\w|=|\\*|\\-|\\\\/]+?/[\\w|\\-|\\\\/]+/$", Perl5Compiler.DEFAULT_MASK); } catch (org.apache.oro.text.regex.MalformedPatternException ex){ ex.printStackTrace(); } } /** * Parse a CommandLine instance. */ public void parse() throws CommandParseException { StringReader r = new StringReader(cmd) ; StreamTokenizer st = new StreamTokenizer(r); st.ordinaryChar('.'); //equivalent to (ascii codes): st.wordChars(33,44) st.wordChars('!',','); //equivalent to: st.wordChars(46,47) st.wordChars('.','/'); st.wordChars('=','='); //equivalent to: st.wordChars(63,64) st.wordChars('?','@'); //equivalent to: st.wordChars(91,96) st.wordChars('[','`'); try { while (st.nextToken() != st.TT_EOF){ if (st.ttype == st.TT_WORD){ parsedCmd.addElement(new String(st.sval)); } if (st.ttype == '-'){ parsedCmd.addElement(new String("-")); } if (st.ttype == st.TT_NUMBER){ } } } catch (IOException e){ throw new CommandParseException() ; } switch (parsedCmd.size()){ case 0: break; case 1: // simple command action = (String)parsedCmd.elementAt(0); if (action.compareTo(LIST) ==0 || action.compareTo(WHERE) == 0){ target = ".*"; } else { throw new CommandParseException() ; } break; default : // more than 1 element in the command line action = (String)parsedCmd.elementAt(0); if ( isaReplaceAction(action) == true || action.compareTo(LIST)==0 || action.compareTo(GO)==0){ boolean isOption = false ; for (int i = 1 ; i < parsedCmd.size() ; i++){ String curWord = (String)parsedCmd.elementAt(i); // System.out.println(curWord+" "+option); if (isOption){ /* we already met an option modifier, we're waiting for an option */ isOption = false ; if (curWord.compareTo(REC) == 0 || curWord.compareTo(ATTR) == 0 || curWord.compareTo(REC+ATTR) == 0 || curWord.compareTo(ATTR+REC) == 0 ){ option = curWord ; } else { // unknown option System.out.println("option discarded "+curWord); } } else { /* beginning of an option (modifier) */ if (curWord.compareTo("-")==0){ isOption = true ; } else { /* we're not waiting for an option so it's the command target */ target = curWord ; break ; } } } } else { throw new CommandParseException() ; } if (target == null){ throw new CommandParseException() ; } } } /** * Get the command line action * @return the string action (should be a jigshell action). */ public String getAction(){ return (action) ; } /** * Get the command target * @return the string target (should be a name or regexp). */ public String getTarget(){ return (target) ; } /** * Get the command option * @return the command option ("none" if no option specified in * the command line). */ public String getOption(){ return (option) ; } /* check whether a string is a s/truc/chose/ regexp. */ private boolean isaReplaceAction(String s){ if (pmatcher.matches(s, srPattern)){ return true ; } return false ; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -