adapted to changed interface of parser
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>
Thu, 29 May 2014 07:59:23 +0000 (09:59 +0200)
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>
Thu, 29 May 2014 07:59:23 +0000 (09:59 +0200)
modules/language/python/parser-tool.scm
modules/language/python/parser.scm

index ec7b504d8a8bd57719f8012ee6a6502e8954571a..754917f6e1b92b7c0301022eb764c929399e962b 100644 (file)
@@ -42,7 +42,5 @@
   ;; Sets up a standar parser functionals with INDENT field added
   (setup-parser
    <p-define> <p-lambda> <fail> <p-cc> <succeds> .. xx
-   X XL N M (0 0 0)
-   s-false s-true s-mk-seq s-mk-and s-mk-or
-   s-seq s-and s-and! s-and!! s-or 
-   pp))
+   X XL ((N 0) (M 0) (INDENT 0))
+   s-false s-true s-mk-seq s-mk-and s-mk-or))
index 639955e3c374386613e3abe29dce904c599d44a0..9ea1d4f78a8fb26eae563086aaf2b2cc71542e26 100644 (file)
@@ -49,9 +49,8 @@
   (<p-lambda> (c)
     (cond
      ((> i n)
-      (<let>  ((Inew (cons i INDENT)))
-       (<syntax-parameterize> ((INDENT (lambda x #'Inew)))
-         (<p-cc> c))))
+      (<with-bind> ((INDENT (cons i INDENT)))
+        (<p-cc> c)))
      ((< i n)
       (<or>
        (<and>
 (define indent= wn)
 (define indent+ wn+)
 (define indent-
-  (<p-lambda> (c)
-    (<let> ((i (cdr INDENT)))
-       (<syntax-parameterize> ((INDENT (lambda x #'i)))
-        (<p-cc> c)))))
+  (<p-lambda> (c)              
+    (<with-bind> ((INDENT (cdr INDENT)))
+      (<p-cc> c))))
 
 
 (define ih  (f-reg! "a-zA-Z_"))
 
 (define decorators (ff+ decorator))
 
+
 (define decorated (f-list #:decorated
                          decorators 
                          (f-or classdef funcdef)))
   (f-or! if_stmt while_stmt for_stmt try_stmt with_stmt funcdef classdef 
         decorated))
 
-(define single_input (f-or (f-seq (f-pk 0) nl)
-                          (f-seq (f-pk 1) indent= simple_stmt) 
-                          (f-seq (f-pk 2) indent= compound_stmt nl)))
+(define single_input (f-or! (f-seq (f-pk 1) indent= simple_stmt) 
+                            (f-seq (f-pk 2) indent= compound_stmt nl)
+                            (f-seq (f-pk 0) nl)))
 
 (set! stmt (f-or simple_stmt compound_stmt))