changeset 28:7973c4d6a945 draft

Revert previous commit as it is not working
author Lewin Bormann <lbo@spheniscida.de>
date Tue, 21 May 2019 10:30:44 +0200
parents 6e9cf2fb5f49
children f5f5e4a477e4
files pcombinators/combinators.py
diffstat 1 files changed, 5 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/pcombinators/combinators.py	Tue May 21 10:11:43 2019 +0200
+++ b/pcombinators/combinators.py	Tue May 21 10:30:44 2019 +0200
@@ -135,7 +135,7 @@
             return self._transform(r), st2
         except Exception as e:
             st.reset(initial)
-            raise Exception('{} (in {} at {} (col {}))'.format(e, self._transform, st, st.index()))
+            raise Exception('{} (at {} (col {}))'.format(e, st, st.index()))
 
 class _Sequence(Parser):
     _parsers = []
@@ -156,8 +156,7 @@
                     return None, st
                 st.reset(before)
                 break
-            if result is not SKIP_MARK:
-                results.append(result)
+            Util.extend_results(results, result)
             st = st2
         return results, st2
 
@@ -203,8 +202,7 @@
                     st.reset(initial)
                     return None, st
                 return results, st2
-            if r is not SKIP_MARK:
-                results.append(r)
+            Util.extend_results(results, r)
             st = st2
             i += 1
         return results, st
@@ -275,18 +273,11 @@
 
 def Last(p):
     """Return the last result from the list of results of p. Result is scalar."""
-    def last(l):
-        if isinstance(l, list):
-            if len(l) == 0:
-                return l
-            return l[-1]
-    return p >> last
-
-SKIP_MARK = []
+    return p >> (lambda l: l[-1] if isinstance(l, list) else l)
 
 def Skip(p):
     """Omit the result of parser p, and replace it with []. Result is []."""
-    return p >> (lambda r: SKIP_MARK)
+    return p >> (lambda r: [])
 
 def ConcatenateResults(p):
     """Concatenate string results into a single string. Result is string."""