Index: /pkpgcounter/trunk/BUGS
===================================================================
--- /pkpgcounter/trunk/BUGS (revision 303)
+++ /pkpgcounter/trunk/BUGS (revision 406)
@@ -22,7 +22,4 @@
 pkpgcounter BUGS :
    
-  - The PCL3/4/5 parser have to be rewritten as a table driven parser, which
-    will be more easily extensible.
-    
   - All parsers need more testing, especially those which allow the number
     of copies to be specified as part of the data streams, as well as those
Index: /pkpgcounter/trunk/pkpgpdls/pcl345.py
===================================================================
--- /pkpgcounter/trunk/pkpgpdls/pcl345.py (revision 403)
+++ /pkpgcounter/trunk/pkpgpdls/pcl345.py (revision 406)
@@ -236,24 +236,4 @@
                 self.setPageDict("duplex", value)
                 
-    def escAmpb(self) :    
-        """Handles the ESC&b sequence."""
-        while 1 :
-            (value, end) = self.getInteger()
-            if value is None :
-                return
-            if end == 'W' :    
-                self.pos += value
-                #self.logdebug("SKIPTO %08x" % self.pos)
-                
-    def escAmpn(self) :    
-        """Handles the ESC&n sequence."""
-        while 1 :
-            (value, end) = self.getInteger()
-            if value is None :
-                return
-            if end == 'W' :    
-                self.pos += value
-                #self.logdebug("SKIPTO %08x" % self.pos)
-                
     def escAmpp(self) :    
         """Handles the ESC&p sequence."""
@@ -266,11 +246,4 @@
                 #self.logdebug("SKIPTO %08x" % self.pos)
                 
-    def escAmpu(self) :    
-        """Handles the ESC&u sequence."""
-        while 1 :
-            (value, end) = self.getInteger()
-            if value is None :
-                return
-                
     def escStarb(self) :    
         """Handles the ESC*b sequence."""
@@ -282,28 +255,4 @@
                 self.pos += (value or 0)
                 #self.logdebug("SKIPTO %08x" % self.pos)
-                
-    def escStarcgilmv(self) :    
-        """Handles the ESC*c, ESC*g, ESC*i, ESC*l, ESC*m, ESC*v sequences."""
-        while 1 :
-            (value, end) = self.getInteger()
-            if value is None :
-                return
-            if end == 'W' :    
-                self.pos += value
-                #self.logdebug("SKIPTO %08x" % self.pos)
-                
-    def escStaro(self) :    
-        """Handles the ESC*o sequence."""
-        while 1 :
-            (value, end) = self.getInteger()
-            if value is None :
-                return
-                
-    def escStarp(self) :    
-        """Handles the ESC*p sequence."""
-        while 1 :
-            (value, end) = self.getInteger()
-            if value is None :
-                return
                 
     def escStarr(self) :    
@@ -325,6 +274,6 @@
                 self.startgfx.append(value)
                 
-    def escStart(self) :    
-        """Handles the ESC*t sequence."""
+    def escStaroptAmpu(self) :    
+        """Handles the ESC*o ESC*p ESC*t and ESC&u sequences."""
         while 1 :
             (value, end) = self.getInteger()
@@ -332,6 +281,6 @@
                 return
         
-    def escRightorLeftParsf(self) :    
-        """Handles the ESC(s, ESC)s, ESC(f sequences."""
+    def escSkipSomethingW(self) :    
+        """Handles the ESC???###W sequences."""
         while 1 :
             (value, end) = self.getInteger()
@@ -432,29 +381,29 @@
         self.escamptags = [lambda : None ] * 256
         self.escamptags[ord('a')] = self.escAmpa
-        self.escamptags[ord('b')] = self.escAmpb
         self.escamptags[ord('l')] = self.escAmpl
-        self.escamptags[ord('n')] = self.escAmpn
         self.escamptags[ord('p')] = self.escAmpp
-        self.escamptags[ord('u')] = self.escAmpu
+        self.escamptags[ord('b')] = self.escSkipSomethingW
+        self.escamptags[ord('n')] = self.escSkipSomethingW
+        self.escamptags[ord('u')] = self.escStaroptAmpu
         
         self.escstartags = [ lambda : None ] * 256
         self.escstartags[ord('b')] = self.escStarb
-        self.escstartags[ord('o')] = self.escStaro
-        self.escstartags[ord('p')] = self.escStarp
         self.escstartags[ord('r')] = self.escStarr
-        self.escstartags[ord('t')] = self.escStart
-        self.escstartags[ord('c')] = self.escStarcgilmv
-        self.escstartags[ord('g')] = self.escStarcgilmv
-        self.escstartags[ord('i')] = self.escStarcgilmv
-        self.escstartags[ord('l')] = self.escStarcgilmv
-        self.escstartags[ord('m')] = self.escStarcgilmv
-        self.escstartags[ord('v')] = self.escStarcgilmv
+        self.escstartags[ord('o')] = self.escStaroptAmpu
+        self.escstartags[ord('p')] = self.escStaroptAmpu
+        self.escstartags[ord('t')] = self.escStaroptAmpu
+        self.escstartags[ord('c')] = self.escSkipSomethingW
+        self.escstartags[ord('g')] = self.escSkipSomethingW
+        self.escstartags[ord('i')] = self.escSkipSomethingW
+        self.escstartags[ord('l')] = self.escSkipSomethingW
+        self.escstartags[ord('m')] = self.escSkipSomethingW
+        self.escstartags[ord('v')] = self.escSkipSomethingW
         
         self.escleftpartags = [ lambda : None ] * 256
-        self.escleftpartags[ord('s')] = self.escRightorLeftParsf
-        self.escleftpartags[ord('f')] = self.escRightorLeftParsf
+        self.escleftpartags[ord('s')] = self.escSkipSomethingW
+        self.escleftpartags[ord('f')] = self.escSkipSomethingW
         
         self.escrightpartags = [ lambda : None ] * 256
-        self.escrightpartags[ord('s')] = self.escRightorLeftParsf
+        self.escrightpartags[ord('s')] = self.escSkipSomethingW
         
         self.pos = 0
Index: /pkpgcounter/trunk/pkpgpdls/version.py
===================================================================
--- /pkpgcounter/trunk/pkpgpdls/version.py (revision 403)
+++ /pkpgcounter/trunk/pkpgpdls/version.py (revision 406)
@@ -23,5 +23,5 @@
 
 
-__version__ = "1.86beta"
+__version__ = "2.00"
 
 __doc__ = """pkpgcounter : a generic Page Description Languages parser."""
Index: /pkpgcounter/trunk/man/pkpgcounter.1
===================================================================
--- /pkpgcounter/trunk/man/pkpgcounter.1 (revision 387)
+++ /pkpgcounter/trunk/man/pkpgcounter.1 (revision 406)
@@ -2,7 +2,7 @@
 .TH PKPGCOUNTER "1" "September 2006" "C@LL - Conseil Internet & Logiciels Libres" "User Commands"
 .SH NAME
-pkpgcounter \- manual page for pkpgcounter 1.85
+pkpgcounter \- manual page for pkpgcounter 2.00
 .SH DESCRIPTION
-pkpgcounter v1.85 (c) 2003, 2004, 2005, 2006 Jerome Alet
+pkpgcounter v2.00 (c) 2003, 2004, 2005, 2006 Jerome Alet
 .PP
 pkpgcounter is a generic Page Description Language parser.
Index: /pkpgcounter/trunk/NEWS
===================================================================
--- /pkpgcounter/trunk/NEWS (revision 387)
+++ /pkpgcounter/trunk/NEWS (revision 406)
@@ -22,4 +22,11 @@
 pkpgcounter News :
 
+  * 2.00 :
+  
+    - The PCL3/4/5 parser was rewritten from scratch and is now
+      table driven.
+      
+    - Improved the PostScript parser.
+    
   * 1.85 :
   
Index: /pkpgcounter/trunk/README
===================================================================
--- /pkpgcounter/trunk/README (revision 386)
+++ /pkpgcounter/trunk/README (revision 406)
@@ -126,10 +126,7 @@
 =============================================================================
 
-The PCL3/4/5 parser included in pkpgcounter is a Python backport of an early
+Before pkpgcounter v1.86, the PCL3/4/5 parser was a Python backport of an early
 release of the PCLCount software by Eduardo Gielamo Oliveira and Rodolfo Broco
-Manin. 
-
-Although this IS NOT needed for pkpgcounter to work, you can download the
-original PCLCount software from :
+Manin, available from :
 
     http://www.fea.unicamp.br/pclcount/
@@ -137,13 +134,14 @@
 Their software is distributed under either the terms of a BSD-like license,    
 or the terms of the GNU General Public License of the Free Software Foundation.
+
+Beginning with pkpgcounter v1.86, the PCL3/4/5 parser was rewritten from
+scratch, and is now much more readable, maintainable, and of course accurate.
+
+The old parser is still available, but not used, in the pkpgpdls/oldpcl345.py
+Python module.
     
-Over time both software evolved following different paths, and the accounting
-results they give may differ depending on the printer driver being used.
-We know that pkpgcounter's PCL3/4/5 parser sometimes is not accurate,
-and we are working on improving the situation. We currently don't know how 
-PCLCount would behave with the same input files.
-
 pkpgcounter's PCLXL (aka PCL6) parser doesn't originate from PCLCount, but 
-was written from scratch. 
+was written from scratch, just like all the other parsers included in
+pkpgcounter.
 
 =============================================================================
