You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by je...@apache.org on 2002/08/11 18:00:34 UTC
cvs commit: jakarta-slide/src/webdav/client/src/org/apache/webdav/cmd Client.g
jericho 2002/08/11 09:00:33
Modified: src/webdav/client/src/org/apache/webdav/cmd Client.g
Log:
- Clean up the code (following antlr convention).
- Add some documents.
- Fix the question mark (?) to work ok.
- Prepare to use tree construction for the near future.
- Make it work ok on Mac OS also
Remove \r from the white space rule.
Change the name from the NL rule to the EOL rule.
- Fix the character vocabulary including EOF, except for antlr internal uses.
- Add some lexer rules for the future use.
Specially thanks for guiding me to Tim Anderson (tima at intalio.com) =^.^=
Revision Changes Path
1.7 +1072 -396 jakarta-slide/src/webdav/client/src/org/apache/webdav/cmd/Client.g
Index: Client.g
===================================================================
RCS file: /home/cvs/jakarta-slide/src/webdav/client/src/org/apache/webdav/cmd/Client.g,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Client.g 25 Jul 2002 10:25:20 -0000 1.6
+++ Client.g 11 Aug 2002 16:00:33 -0000 1.7
@@ -9,7 +9,7 @@
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -63,461 +63,1137 @@
*
*/
package org.apache.webdav.cmd;
-}
-// Import the necessary classes
-{
- import java.io.*;
- import java.util.*;
- import org.apache.util.QName;
- import org.apache.webdav.lib.PropertyName;
+import java.io.*;
+import java.util.*;
+import org.apache.util.QName;
+import org.apache.webdav.lib.PropertyName;
+
}
+// --------------------------------------------------- parser class definitions
+
+/**
+ * The Slide WebDAV client parser.
+ *
+ * @version $Revision$ $Date$
+ * @author Dirk Verbeeck
+ */
class ClientParser extends Parser;
+
+// ------------------------------------------------------------ options section
+
options {
- buildAST = false; // uses CommonAST by default
- k=2;
+ k = 2;
+ exportVocab = Slide; // call this vocabulary "Slide"
+ codeGenMakeSwitchThreshold = 2; // for debug or some optimizations
+ codeGenBitsetTestThreshold = 3;
+ defaultErrorHandler = false; // abort parsing on error
+ // TODO: use a tree-parser rule
+ // buildAST = true; // build tree construction
+ buildAST = false; // uses CommonAST by default
}
-///////////////////////////////////////////////////////////////////////
-// Helper methods
-///////////////////////////////////////////////////////////////////////
+// ------------------------------------------------------------- tokens section
+
+// Java code
{
+
+ // ------------------------------------------------------------- properties
+
+ /**
+ * The Slide WebDAV client.
+ */
protected Client client;
- void setClient(Client client)
- {
- this.client=client;
+ // --------------------------------------------------------- helper methods
+
+ /**
+ * Set a client.
+ *
+ * @param client a client
+ */
+ void setClient(Client client) {
+ this.client = client;
}
- private String text(Token token)
- {
+
+ /**
+ * Get the text from a token.
+ *
+ * @param token a token
+ * @return the token string
+ */
+ private String text(Token token) {
return (token != null) ? token.getText() : null;
}
- private QName qname(Token token)
- {
- if (token==null)
- return null;
- String tmp=token.getText();
+ /**
+ * Get the qualified name from a token.
+ *
+ * @param token a token
+ * @return the qualified name
+ */
+ private QName qname(Token token) {
+ if (token == null) return null;
+
+ String tmp = token.getText();
if (!tmp.startsWith("<")) {
- return new PropertyName("DAV:",text(token));
+ return new PropertyName("DAV:", text(token));
}
-
- String namespaceURI=tmp.substring(tmp.indexOf('"')+1,tmp.lastIndexOf('"'));
- String localName=tmp.substring(1,tmp.indexOf(' '));
+ String namespaceURI = tmp.substring(tmp.indexOf('"') + 1,
+ tmp.lastIndexOf('"'));
+ String localName = tmp.substring(1, tmp.indexOf(' '));
- return new QName(namespaceURI,localName);
+ return new QName(namespaceURI, localName);
}
+
- private PropertyName pname(Token token)
- {
- if (token==null)
- return null;
+ /**
+ * Get the property name from a token.
+ *
+ * @param token a token
+ * @return the property name
+ */
+ private PropertyName pname(Token token) {
+ if (token == null) return null;
- String tmp=token.getText();
+ String tmp = token.getText();
if (!tmp.startsWith("<")) {
- return new PropertyName("DAV:",text(token));
+ return new PropertyName("DAV:", text(token));
}
- String namespaceURI=tmp.substring(tmp.indexOf('"')+1,tmp.lastIndexOf('"'));
- String localName=tmp.substring(1,tmp.indexOf(' '));
+ String namespaceURI = tmp.substring(tmp.indexOf('"') + 1,
+ tmp.lastIndexOf('"'));
+ String localName = tmp.substring(1, tmp.indexOf(' '));
- return new PropertyName(namespaceURI,localName);
+ return new PropertyName(namespaceURI, localName);
}
+
- private void printUsage(String command) throws RecognitionException,TokenStreamException
- {
+ /**
+ * Print the usage for a given command.
+ *
+ * @param command a command
+ */
+ private void printUsage(String command)
+ throws RecognitionException, TokenStreamException {
+
client.printUsage(command);
skip(); // skip the rest of the line
}
-
-}
-///////////////////////////////////////////////////////////////////////
-// Commands
-///////////////////////////////////////////////////////////////////////
-
-commands : { client.prompt(); } ( command { client.prompt(); } )+ ;
-
-command : exit | help | invalid | nothing | spool | run | echo | debug | status |
- optionsmethod | connect | disconnect |
- lpwd | lcd | lls |
- pwc | cd | ls | mkcol | move | copy | delete |
- get | put | propfind | propfindall | proppatch |
- lock | unlock | locks |
- grant | deny | revoke | acl | principalcollectionset |
- versioncontrol | report | ereport | lreport | mkws |
- checkin | checkout | uncheckout ;
-
-
-help: (HELP | QUESTION) NL
-{ client.help(null); }
-exception catch [RecognitionException ex]
-{ printUsage("help"); };
-
-status: (STATUS) NL
-{ client.status(); }
-exception catch [RecognitionException ex]
-{ printUsage("status"); };
-
-
-spool : SPOOL (file:STRING | OFF) NL
-{
- if (file!=null) {
- client.enableSpoolToFile(text(file));
+}
+
+// --------------------------------------------------------------- parser rules
+
+commands
+ : {
+ client.prompt();
+ }
+ ( command
+ {
+ client.prompt();
+ }
+ )+
+ ;
+
+command
+ : exit
+ | help
+ | invalid
+ | nothing
+ | spool
+ | run
+ | echo
+ | debug
+ | status
+ | optionsmethod
+ | connect
+ | disconnect
+ | lpwd
+ | lcd
+ | lls
+ | pwc
+ | cd
+ | ls
+ | mkcol
+ | move
+ | copy
+ | delete
+ | get
+ | put
+ | propfind
+ | propfindall
+ | proppatch
+ | lock
+ | unlock
+ | locks
+ | grant
+ | deny
+ | revoke
+ | acl
+ | principalcollectionset
+ | versioncontrol
+ | report
+ | ereport
+ | lreport
+ | mkws
+ | checkin
+ | checkout
+ | uncheckout
+ ;
+
+help
+ : ( HELP
+ | QUESTION
+ )
+ EOL
+ {
+ client.help(null);
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("help");
}
- else {
- client.disableSpoolToFile();
+
+status
+ : STATUS
+ EOL
+ {
+ client.status();
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("status");
+ }
+
+spool
+ : SPOOL
+ ( file:STRING
+ | OFF
+ )
+ EOL
+ {
+ if (file != null) {
+ client.enableSpoolToFile(text(file));
+ } else {
+ client.disableSpoolToFile();
+ }
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("spool");
+ }
+
+run
+ : RUN
+ script:STRING
+ EOL
+ {
+ client.executeScript(text(script));
+ }
+ ;
+ exception catch [RecognitionException ex]
+ {
+ printUsage("run");
+ }
+
+echo
+ : ECHO
+ {
+ boolean isEnabled;
+ }
+ ( ON
+ {
+ isEnabled = true;
+ }
+ | OFF
+ {
+ isEnabled = true;
+ }
+ )
+ EOL
+ {
+ client.setEchoEnabled(isEnabled);
+ }
+ ;
+ exception catch [RecognitionException ex]
+ {
+ printUsage("echo");
+ }
+
+debug
+ : {
+ int level;
+ }
+ DEBUG
+ ( ON
+ {
+ level = Client.DEBUG_ON;
+ }
+ | OFF
+ {
+ level = Client.DEBUG_OFF;
+ }
+ )
+ EOL
+ {
+ client.setDebug(level);
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("debug");
}
-}
-exception catch [RecognitionException ex]
-{ printUsage("spool"); };
-
-run : RUN script:STRING NL
-{ client.executeScript(text(script)); }
-exception catch [RecognitionException ex]
-{ printUsage("run"); };
-
-echo : ECHO { boolean isEnabled; }
- (ON { isEnabled=true; } | OFF { isEnabled=true; }) NL
-{ client.setEchoEnabled(isEnabled); }
-exception catch [RecognitionException ex]
-{ printUsage("echo"); };
-
-debug : {int level;} DEBUG (ON {level=Client.DEBUG_ON;} | OFF {level=Client.DEBUG_OFF;}) NL
-{ client.setDebug(level); }
-exception catch [RecognitionException ex]
-{ printUsage("debug"); };
-optionsmethod : OPTIONS path:STRING NL
-{ client.options(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("options"); };
-
-connect: (CONNECT |OPEN ) uri:STRING NL
-{ client.connect(text(uri)); }
-exception catch [RecognitionException ex]
-{ printUsage("connect"); };
-
-disconnect: DISCONNECT NL
-{ client.disconnect(); }
-exception catch [RecognitionException ex]
-{ printUsage("disconnect"); };
-
-lpwd: LPWD NL
-{ client.lpwd(); }
-exception catch [RecognitionException ex]
-{ printUsage("lpwd"); };
-
-pwc: (PWC | PWD) NL
-{ client.pwc(); }
-exception catch [RecognitionException ex]
-{ printUsage("pwc"); };
-
-lcd: LCD path:STRING NL
-{ client.lcd(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("lcd"); };
-
-cd: (CD | CC) path:STRING NL
-{ client.cd(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("cd"); };
-
-lls: (LLS | LDIR) (option:OPTIONSTRING)? (path:STRING)? NL
-{ client.lls(text(option),text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("lls"); };
-
-ls: (LS | DIR) (option:OPTIONSTRING)? (path:STRING)? NL
-{ client.ls(text(option),text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("ls"); };
-
-mkcol : (MKCOL | MKDIR) path:STRING NL
-{ client.mkcol(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("mkcol"); };
-
-move : MOVE source:STRING destination:STRING NL
-{ client.move(text(source),text(destination)); }
-exception catch [RecognitionException ex]
-{ printUsage("move"); };
-
-copy : COPY source:STRING destination:STRING NL
-{ client.copy(text(source),text(destination)); }
-exception catch [RecognitionException ex]
-{ printUsage("copy"); };
-
-delete : (DELETE | DEL | RM) path:STRING NL
-{ client.delete(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("delete"); };
-
-propfind : (PROPFIND | PROPGET) path:STRING
- { Vector properties = new Vector(); }
- (prop:STRING { properties.add(pname(prop)); } |
- nsprop:QNAME { properties.add(pname(nsprop)); })+ NL
-{ client.propfind(text(path),properties); }
-exception catch [RecognitionException ex]
-{ printUsage("propfind"); };
-
-propfindall : (PROPFINDALL | PROPGETALL) (path:STRING)? NL
-{ client.propfindall(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("propfindall"); };
-
-proppatch : (PROPPATCH | PROPSET) path:STRING prop:STRING value:STRING NL
-{ client.proppatch(text(path),text(prop),text(value)); }
-exception catch [RecognitionException ex]
-{ printUsage("proppatch"); };
-
-get : GET path:STRING (file:STRING)? NL
-{ client.get(text(path),text(file)); }
-exception catch [RecognitionException ex]
-{ printUsage("get"); };
-
-put : PUT file:STRING (path:STRING)? NL
-{ client.put(text(file),text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("put"); };
-
-lock : LOCK (path:STRING)? NL
-{ client.lock(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("lock"); };
-
-unlock : UNLOCK (path:STRING)? NL
-{ client.unlock(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("unlock"); };
-
-locks : LOCKS (path:STRING)? NL
-{ client.locks(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("locks"); };
-
-grant : GRANT (permission:STRING | nspermisssion:QNAME) (ON path:STRING)? TO principal:STRING NL
-{ if (permission!=null)
- client.grant(text(permission),text(path),text(principal));
- else
- client.grant(qname(nspermisssion),text(path),text(principal));
-}
-exception catch [RecognitionException ex]
-{ client.printUsage("grant"); };
+optionsmethod
+ : OPTIONS
+ path:STRING
+ EOL
+ {
+ client.options(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("options");
+ }
-deny : DENY (permission:STRING | nspermisssion:QNAME) (ON path:STRING)? TO principal:STRING NL
-{ if (permission!=null)
- client.deny(text(permission),text(path),text(principal));
- else
- client.deny(qname(nspermisssion),text(path),text(principal));
-}
-exception catch [RecognitionException ex]
-{ client.printUsage("deny"); };
+connect
+ : ( CONNECT
+ | OPEN
+ )
+ uri:STRING
+ EOL
+ {
+ client.connect(text(uri));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("connect");
+ }
-revoke : REVOKE (permission:STRING | nspermisssion:QNAME) (ON path:STRING)? FROM principal:STRING NL
-{ if (permission!=null)
- client.revoke(text(permission),text(path),text(principal));
- else
- client.revoke(qname(nspermisssion),text(path),text(principal));
-}
-exception catch [RecognitionException ex]
-{ client.printUsage("revoke"); };
+disconnect
+ : DISCONNECT
+ EOL
+ {
+ client.disconnect();
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("disconnect");
+ }
-acl : ACL (path:STRING)? NL
-{ client.acl(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("acl"); };
-
-principalcollectionset : PRINCIPALCOLLECTIONSET (path:STRING)? NL
-{ client.principalcollectionset(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("principalcollectionset"); };
+lpwd
+ : LPWD
+ EOL
+ {
+ client.lpwd();
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("lpwd");
+ }
-versioncontrol : VERSIONCONTROL (target:STRING)? path:STRING NL
-{
- if (target==null)
- client.versioncontrol(text(path));
- else
- client.versioncontrol(text(target),text(path));
-}
-exception catch [RecognitionException ex]
-{ printUsage("versioncontrol"); };
+pwc
+ : ( PWC
+ | PWD
+ )
+ EOL
+ {
+ client.pwc();
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("pwc");
+ }
+
+lcd
+ : LCD
+ path:STRING
+ EOL
+ {
+ client.lcd(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("lcd");
+ }
+
+cd
+ : ( CD
+ | CC
+ )
+ path:STRING
+ EOL
+ {
+ client.cd(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("cd");
+ }
-checkin : CHECKIN path:STRING NL
-{ client.checkin(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("checkin"); };
-
-checkout : CHECKOUT path:STRING NL
-{ client.checkout(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("checkout"); };
-
-uncheckout : UNCHECKOUT path:STRING NL
-{ client.uncheckout(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("uncheckout"); };
-
-report : REPORT path:STRING
- { Vector properties = new Vector(); }
- (prop:STRING { properties.add(pname(prop)); } |
- nsprop:QNAME { properties.add(pname(nsprop)); })? NL
-{ client.report(text(path),properties); }
-exception catch [RecognitionException ex]
-{ printUsage("report"); };
-
-ereport : EREPORT path:STRING (filename:STRING)? NL
-{ client.ereport(text(path),text(filename)); }
-exception catch [RecognitionException ex]
-{ printUsage("ereport"); };
-
-lreport : LREPORT path:STRING
- { Vector properties = new Vector(); }
- (prop:STRING { properties.add(pname(prop)); } |
- nsprop:QNAME { properties.add(pname(nsprop)); })+
- ON
- { Vector historyUris = new Vector(); }
- (uri:STRING { historyUris.add(text(uri)); })+ NL
-{ client.lreport(text(path),properties,historyUris); }
-exception catch [RecognitionException ex]
-{ printUsage("lreport"); };
-
-mkws : MKWS path:STRING NL
-{ client.mkws(text(path)); }
-exception catch [RecognitionException ex]
-{ printUsage("mkws"); };
+lls
+ : ( LLS
+ | LDIR
+ )
+ (option:OPTIONSTRING)?
+ (path:STRING)?
+ EOL
+ {
+ client.lls(text(option), text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("lls");
+ }
+ls
+ : ( LS
+ | DIR
+ )
+ (option:OPTIONSTRING)?
+ (path:STRING)?
+ EOL
+ {
+ client.ls(text(option), text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("ls");
+ }
-////////////////////////////////////////////////////
+mkcol
+ : ( MKCOL
+ | MKDIR
+ )
+ path:STRING
+ EOL
+ {
+ client.mkcol(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("mkcol");
+ }
-exit: (EXIT | QUIT | BYE) NL
-{
- throw new TokenStreamException("exit");
-};
+move
+ : MOVE
+ source:STRING
+ destination:STRING
+ EOL
+ {
+ client.move(text(source), text(destination));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("move");
+ }
-invalid : cmd:STRING (STRING)* NL
-{
- client.printInvalidCommand(text(cmd));
-};
+copy
+ : COPY
+ source:STRING
+ destination:STRING
+ EOL
+ {
+ client.copy(text(source), text(destination));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("copy");
+ }
+
+delete
+ : ( DELETE
+ | DEL
+ | RM
+ )
+ path:STRING
+ EOL
+ {
+ client.delete(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("delete");
+ }
+
+propfind
+ : ( PROPFIND
+ | PROPGET
+ )
+ path:STRING
+ {
+ Vector properties = new Vector();
+ }
+ ( prop:STRING
+ {
+ properties.add(pname(prop));
+ }
+ | nsprop:QNAME
+ {
+ properties.add(pname(nsprop));
+ }
+ )+
+ EOL
+ {
+ client.propfind(text(path), properties);
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("propfind");
+ }
-nothing: NL;
+propfindall
+ : ( PROPFINDALL
+ | PROPGETALL
+ )
+ (path:STRING)?
+ EOL
+ {
+ client.propfindall(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("propfindall");
+ }
+
+proppatch
+ : ( PROPPATCH
+ | PROPSET
+ )
+ path:STRING
+ prop:STRING
+ value:STRING
+ EOL
+ {
+ client.proppatch(text(path), text(prop), text(value));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("proppatch");
+ }
+
+get
+ : GET
+ path:STRING
+ (file:STRING)?
+ EOL
+ {
+ client.get(text(path), text(file));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("get");
+ }
+
+put
+ : PUT
+ file:STRING
+ (path:STRING)?
+ EOL
+ {
+ client.put(text(file), text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("put");
+ }
-skip : (STRING | all_tokens)* NL
-{ /* skip all */ };
+lock
+ : LOCK
+ (path:STRING)?
+ EOL
+ {
+ client.lock(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("lock");
+ }
-all_tokens : EXIT | QUIT | BYE | HELP | QUESTION | RUN | SPOOL | STATUS |
- ECHO | ON | OFF | SET | DEBUG | OPTIONS | OPEN |
- CONNECT | CLOSE | DISCONNECT | LPWD | LCD | LLS |
- LDIR | PWC | PWD | CC | CD | LS | DIR | GET | PUT |
- MKCOL | MKDIR | DELETE | DEL | RM | COPY | CP | MOVE |
- MV | LOCK | UNLOCK | LOCKS | PROPGET | PROPFIND |
- PROPGETALL | PROPFINDALL | PROPPUT | PROPPATCH | ACL |
- PRINCIPALCOL | GRANT | DENY | REVOKE | TO | FROM |
- PRINCIPALCOLLECTIONSET | VERSIONCONTROL | REPORT |
- EREPORT | LREPORT | MKWS | CHECKIN | CHECKOUT | UNCHECKOUT ;
+unlock
+ : UNLOCK
+ (path:STRING)?
+ EOL
+ {
+ client.unlock(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("unlock");
+ }
-////////////////////////////////////////////////////////
+locks
+ : LOCKS
+ (path:STRING)?
+ EOL
+ {
+ client.locks(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("locks");
+ }
+grant
+ : GRANT
+ ( permission:STRING
+ | nspermisssion:QNAME
+ )
+ ( ON
+ path:STRING)?
+ TO
+ principal:STRING
+ EOL
+ {
+ if (permission != null)
+ client.grant(text(permission), text(path), text(principal));
+ else
+ client.grant(qname(nspermisssion), text(path), text(principal));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ client.printUsage("grant");
+ }
+
+deny
+ : DENY
+ ( permission:STRING
+ | nspermisssion:QNAME)
+ ( ON
+ path:STRING
+ )?
+ TO
+ principal:STRING
+ EOL
+ {
+ if (permission != null)
+ client.deny(text(permission), text(path), text(principal));
+ else
+ client.deny(qname(nspermisssion), text(path), text(principal));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ client.printUsage("deny");
+ }
+
+revoke
+ : REVOKE
+ ( permission:STRING
+ | nspermisssion:QNAME
+ )
+ ( ON
+ path:STRING
+ )?
+ FROM
+ principal:STRING
+ EOL
+ {
+ if (permission != null)
+ client.revoke(text(permission), text(path), text(principal));
+ else
+ client.revoke(qname(nspermisssion), text(path),
+ text(principal));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ client.printUsage("revoke");
+ }
+
+acl
+ : ACL
+ (path:STRING)?
+ EOL
+ {
+ client.acl(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("acl");
+ }
+
+principalcollectionset
+ : PRINCIPALCOLLECTIONSET
+ (path:STRING)?
+ EOL
+ {
+ client.principalcollectionset(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("principalcollectionset");
+ }
+
+versioncontrol
+ : VERSIONCONTROL
+ (target:STRING)?
+ path:STRING
+ EOL
+ {
+ if (target == null)
+ client.versioncontrol(text(path));
+ else
+ client.versioncontrol(text(target), text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("versioncontrol");
+ }
+
+checkin
+ : CHECKIN
+ path:STRING
+ EOL
+ {
+ client.checkin(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("checkin");
+ }
+
+checkout
+ : CHECKOUT
+ path:STRING
+ EOL
+ {
+ client.checkout(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("checkout");
+ }
+
+uncheckout
+ : UNCHECKOUT
+ path:STRING
+ EOL
+ {
+ client.uncheckout(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("uncheckout");
+ }
+
+report
+ : REPORT
+ path:STRING
+ {
+ Vector properties = new Vector();
+ }
+ ( prop:STRING
+ {
+ properties.add(pname(prop));
+ }
+ | nsprop:QNAME
+ {
+ properties.add(pname(nsprop)); }
+ )?
+ EOL
+ {
+ client.report(text(path), properties);
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("report");
+ }
+
+ereport
+ : EREPORT
+ path:STRING
+ (filename:STRING)?
+ EOL
+ {
+ client.ereport(text(path), text(filename));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("ereport");
+ }
+
+lreport
+ : LREPORT
+ path:STRING
+ {
+ Vector properties = new Vector();
+ }
+ ( prop:STRING
+ {
+ properties.add(pname(prop));
+ }
+ | nsprop:QNAME
+ {
+ properties.add(pname(nsprop));
+ }
+ )+
+ ON
+ {
+ Vector historyUris = new Vector();
+ }
+ ( uri:STRING
+ {
+ historyUris.add(text(uri));
+ }
+ )+
+ EOL
+ {
+ client.lreport(text(path), properties, historyUris);
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("lreport");
+ }
+
+mkws
+ : MKWS
+ path:STRING
+ EOL
+ {
+ client.mkws(text(path));
+ }
+ ;
+ exception
+ catch [RecognitionException ex]
+ {
+ printUsage("mkws");
+ }
+
+exit
+ : ( EXIT
+ | QUIT
+ | BYE
+ )
+ EOL
+ {
+ throw new TokenStreamException("exit");
+ }
+ ;
+
+invalid
+ : cmd:STRING (STRING)* EOL
+ {
+ client.printInvalidCommand(text(cmd));
+ }
+ ;
+
+nothing
+ : EOL
+ ;
+
+skip
+ : ( STRING
+ | all_tokens
+ )*
+ EOL
+ { /* skip all */ }
+ ;
+
+all_tokens
+ : EXIT
+ | QUIT
+ | BYE
+ | HELP
+ | QUESTION
+ | RUN
+ | SPOOL
+ | STATUS
+ | ECHO
+ | ON
+ | OFF
+ | SET
+ | DEBUG
+ | OPTIONS
+ | OPEN
+ | CONNECT
+ | CLOSE
+ | DISCONNECT
+ | LPWD
+ | LCD
+ | LLS
+ | LDIR
+ | PWC
+ | PWD
+ | CC
+ | CD
+ | LS
+ | DIR
+ | GET
+ | PUT
+ | MKCOL
+ | MKDIR
+ | DELETE
+ | DEL
+ | RM
+ | COPY
+ | CP
+ | MOVE
+ | MV
+ | LOCK
+ | UNLOCK
+ | LOCKS
+ | PROPGET
+ | PROPFIND
+ | PROPGETALL
+ | PROPFINDALL
+ | PROPPUT
+ | PROPPATCH
+ | ACL
+ | PRINCIPALCOL
+ | GRANT
+ | DENY
+ | REVOKE
+ | TO
+ | FROM
+ | PRINCIPALCOLLECTIONSET
+ | VERSIONCONTROL
+ | REPORT
+ | EREPORT
+ | LREPORT
+ | MKWS
+ | CHECKIN
+ | CHECKOUT
+ | UNCHECKOUT
+ ;
+
+// ----------------------------------------- lexical analyzer class definitions
+
+/**
+ * The Slide WebDAV client scanner.
+ *
+ * @version $Revision$ $Date$
+ * @author Dirk Verbeeck
+ */
class ClientLexer extends Lexer;
+
+// ------------------------------------------------------------ options section
+
options {
- k=1;
+ k = 2;
caseSensitiveLiterals = false;
- charVocabulary='\u0000'..'\uFFFE';
+ charVocabulary = '\u0003'..'\uFFFF';
}
-tokens
-{
- EXIT = "exit";
- QUIT = "quit";
- BYE = "bye";
- HELP = "help";
- STATUS = "status";
- QUESTION = "?";
- RUN = "run";
- SPOOL = "spool";
- ECHO = "echo";
- ON = "on";
- OFF = "off";
- SET = "set";
- DEBUG = "debug";
-
- OPTIONS = "options";
- OPEN = "open";
- CONNECT = "connect";
- CLOSE = "close";
- DISCONNECT = "disconnect";
- LPWD = "lpwd";
- LCD = "lcd";
- LLS = "lls";
- LDIR = "ldir";
- PWC = "pwc";
- PWD = "pwd";
- CC = "cc";
- CD = "cd";
- LS = "ls";
- DIR = "dir";
- GET = "get";
- PUT = "put";
- MKCOL = "mkcol";
- MKDIR = "mkdir";
- DELETE = "delete";
- DEL = "del";
- RM = "rm";
- COPY = "copy";
- CP = "cp";
- MOVE = "move";
- MV = "mv";
- LOCK = "lock";
- UNLOCK = "unlock";
- LOCKS = "locks";
- PROPGET = "propget";
- PROPFIND = "propfind";
- PROPGETALL = "propgetall";
- PROPFINDALL = "propfindall";
- PROPPUT = "propput";
- PROPPATCH = "proppatch";
- ACL = "acl";
- PRINCIPALCOL = "principalcol";
- GRANT = "grant";
- DENY = "deny";
- REVOKE = "revoke";
- TO = "to";
- FROM = "from";
-
- PRINCIPALCOLLECTIONSET = "principalcollectionset";
-
- VERSIONCONTROL = "versioncontrol";
- REPORT = "report";
- EREPORT = "ereport";
- LREPORT = "lreport";
- MKWS = "mkws";
- CHECKIN = "checkin";
- CHECKOUT = "checkout";
- UNCHECKOUT = "uncheckout";
+// ------------------------------------------------------------- tokens section
+
+tokens {
+ EXIT = "exit";
+ QUIT = "quit";
+ BYE = "bye";
+ HELP = "help";
+ STATUS = "status";
+ RUN = "run";
+ SPOOL = "spool";
+ ECHO = "echo";
+ ON = "on";
+ OFF = "off";
+ SET = "set";
+ DEBUG = "debug";
+
+ OPTIONS = "options";
+ OPEN = "open";
+ CONNECT = "connect";
+ CLOSE = "close";
+ DISCONNECT = "disconnect";
+ LPWD = "lpwd";
+ LCD = "lcd";
+ LLS = "lls";
+ LDIR = "ldir";
+ PWC = "pwc";
+ PWD = "pwd";
+ CC = "cc";
+ CD = "cd";
+ LS = "ls";
+ DIR = "dir";
+ GET = "get";
+ PUT = "put";
+ MKCOL = "mkcol";
+ MKDIR = "mkdir";
+ DELETE = "delete";
+ DEL = "del";
+ RM = "rm";
+ COPY = "copy";
+ CP = "cp";
+ MOVE = "move";
+ MV = "mv";
+ LOCK = "lock";
+ UNLOCK = "unlock";
+ LOCKS = "locks";
+ PROPGET = "propget";
+ PROPFIND = "propfind";
+ PROPGETALL = "propgetall";
+ PROPFINDALL = "propfindall";
+ PROPPUT = "propput";
+ PROPPATCH = "proppatch";
+ ACL = "acl";
+ PRINCIPALCOL = "principalcol";
+ GRANT = "grant";
+ DENY = "deny";
+ REVOKE = "revoke";
+ TO = "to";
+ FROM = "from";
+ PRINCIPALCOLLECTIONSET = "principalcollectionset";
+ VERSIONCONTROL = "versioncontrol";
+ REPORT = "report";
+ EREPORT = "ereport";
+ LREPORT = "lreport";
+ MKWS = "mkws";
+ CHECKIN = "checkin";
+ CHECKOUT = "checkout";
+ UNCHECKOUT = "uncheckout";
}
-WS : (' ' | '\t' | '\r')
- { _ttype = Token.SKIP; }
+// ---------------------------------------------------------------- lexer rules
+
+WS
+ : ( ' '
+ | '\t'
+ )
+ {
+ _ttype = Token.SKIP;
+ }
;
-NL : '\n';
+EOL // the end of line
+ : "\r\n" // DOS
+ | '\r' // MAC
+ | '\n' // UN*X
+ ;
-OPTIONSTRING: '-' (CHARS)+;
+OPTIONSTRING
+ : '-' (CHARS)+
+ ;
-STRING: CHARS (CHARS | '-')+ | '"'! (CHARS | ' ' | '-')+ '"'!;
+// TODO: make the flexible string like STRING:
+// '"' (~('"'|'\n'|'\r'))* '"' | (~(' '|'\n'|'\r'))+
+STRING
+ : CHARS (CHARS | '-')+
+ | '"'!
+ ( CHARS
+ | ' '
+ | '-'
+ )+
+ '"'!
+ ;
protected
-CHARS: 'a'..'z' | 'A'..'Z' | '0'..'9' | '.' | ':' | '/';
+CHARS
+ : 'a'..'z'
+ | 'A'..'Z'
+ | '0'..'9'
+ | '.'
+ | ':'
+ | '/'
+ ;
+
+QNAME
+ : '<' STRING " xmlns=\"" STRING "\">"
+ ;
+
+protected
+ALPHANUM
+ : ALPHA
+ | DIGIT
+ ;
+
+protected
+ALPHA
+ : LOWALPHA
+ | UPALPHA
+ ;
+
+protected
+LOWALPHA
+ : 'a'..'z'
+ ;
-QNAME: '<' STRING " xmlns=\"" STRING "\">";
+protected
+UPALPHA
+ : 'A'..'Z'
+ ;
+protected
+DIGIT
+ : '0'..'9'
+ ;
-//protected
-//DIGIT : '0'..'9' ;
-//
-//
-//INT : (DIGIT)+ ;
+QUESTION
+ : '?'
+ ;
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>