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>