sys module
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>
Fri, 16 Feb 2018 11:49:08 +0000 (12:49 +0100)
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>
Fri, 16 Feb 2018 11:49:08 +0000 (12:49 +0100)
modules/language/python/exceptions.scm
modules/language/python/module/re.scm
modules/language/python/module/sys.scm [new file with mode: 0644]

index 413abe1bd12361ae065b9afdaab62a99057e1209..51928b99dd6aba59968213eec0c4a86c90bc76ff 100644 (file)
@@ -4,21 +4,22 @@
   #:export (StopIteration GeneratorExit RuntimeError
                           Exception ValueError TypeError
                           IndexError KeyError AttributeError
-                          SyntaxError
+                          SyntaxError SystemException
                           None))
 
 (define-syntax-rule (aif it p x y) (let ((it p)) (if it x y)))
 
-(define StopIteration  'StopIteration)
-(define GeneratorExit  'GeneratorExit)
-(define RuntimeError   'RuntimeError)
-(define IndexError     'IndexError)
-(define ValueError     'ValueError)
-(define None           'None)
-(define KeyError       'KeyError)
-(define TypeError      'TypeError)
-(define AttributeError 'AttributeError)
-(define SyntaxError    'SyntaxError)
+(define StopIteration    'StopIteration)
+(define GeneratorExit    'GeneratorExit)
+(define SystemException  'SystemException)
+(define RuntimeError     'RuntimeError)
+(define IndexError       'IndexError)
+(define ValueError       'ValueError)
+(define None             'None)
+(define KeyError         'KeyError)
+(define TypeError        'TypeError)
+(define AttributeError   'AttributeError)
+(define SyntaxError      'SyntaxError)
 
 (define-python-class Exception ()
   (define __init__
index 0efbec9cb358715beb16d5d0afb2a1d17e22633d..48259e8437341daaba73c57c2d718c01c100fb00 100644 (file)
@@ -1,17 +1,18 @@
 (define-module (language python modules re)
-  #:export())
+  #:use-module (parser stis-parser)
+  #:export(parse-reg))
 
 
-(define-sytax-rule (mk n tag str) (define n (f-seq tag (f-tag str))))
+(define-syntax-rule (mk n tag str) (define n (f-seq tag (f-tag str))))
 (mk f-. #:. ".")
 (mk f-^ #:^ "^")
 (mk f-$ #:$ "$")
 
 (define subexpr (f-list #:sub
-                        (f-seq (f-tag "(") f-start ee f-end (f-tag ")"))))
+                        (f-seq (f-tag "(")  (Ds ee) (f-tag ")"))))
 
 (define f-back
-  (f-or (f-list #:class (mk-token (f-reg! "[AZbBdDsSwS]")))
+  (f-or (f-list #:class (mk-token (f-reg! "[AZbBdDsSw]")))
         (mk-token (f-reg "."))))
 
 (define (ch not)
@@ -21,6 +22,8 @@
 
 (define bbody (f-cons (ch "[\\]") (ff* (ch "[]\\]"))))
 
+(define q (ch (f-reg "[][?+*.$^()\\]")))
+
 (define choice
   (f-cons #:bracket
           (f-or!
       (.. c2  ((f-tag str) c))
       (<p-cc> (cons (list tag (car c)) (cdr c))))))
 
-(mk-post q* "*" #:*)
-(mk-post q? "?" #:?)
-(mk-post q+ "+" #:+)
-(mk-post q* "*?" #:*?)
-(mk-post q? "??" #:??)
-(mk-post q+ "+?" #:+?)
+(mk-post q*  "*"  #:*)
+(mk-post q?  "?"  #:?)
+(mk-post q+  "+"  #:+)
+(mk-post q*? "*?" #:*?)
+(mk-post q?? "??" #:??)
+(mk-post q+? "+?" #:+?)
 
 (define q-or
   (<p-lambda> (c)     
     (.. c2  ((f-tag "*") c))
     (<p-cc> (cons (list #:* (car c)) (cdr c)))))
 
+(define ee
+  (ff* (f-or! q+? q?? q*? q* q? q+ q-or choice subexpr f-. f-$ f-^ q)))
+   
+#|
+(define-syntax with
+  (syntax-rules ()
+    ((_ a b c ((s v) . l) . code)
+     (let ((ss v))
+       (syntax-parameterize
+       ((s (lambda (x)
+             (syntax-case x ()
+               ((_ . l)
+                #'(ss . l))
+               (_
+                #'ss)))))
+       
+       (with a b c l . code))))
+    ((_ a b c () . code) (<and> a b c . code))))
+
 (define group
   (lambda (f)
     (<p-lambda> (c1)
       (.. c2 (f '()))
       (with ((L (cons (cons I c2) L))
-             (I (+ i 1)))
+             (I (+ I 1)))
         (<p-cc> (list #:list (#:append c1 c2)))))))
 
 (define group-name
      (let ((f (apply f-or!
                      (map (lambda (x)
                             (match x
-                              ((#:ch (:class ch))
+                             ((#:ch (:class ch))
                                (get-class ch))
                               ((#:ch ch)
                                (f-tag! ch)))) ch))))
                 (begin
                   (yield m)
                   (call-with-values cont lp))))))))))
-                    
-            
-          
+|#
+                                
+(define (parse-reg str) (parse str ee))
 
 
   
diff --git a/modules/language/python/module/sys.scm b/modules/language/python/module/sys.scm
new file mode 100644 (file)
index 0000000..0df5bb1
--- /dev/null
@@ -0,0 +1,208 @@
+(define-module (language python module sys)
+  #:use-module (rnrs bytevectors)
+  #:use-module (language python exceptions)
+  #:use-module (language python try)
+  #:use-module (language python module python)
+  #:export (argv byteorder copyright implementation
+                    stdin     stdout     stderr
+                  __stdin__ __stdout__ __stderr__
+                  exit))
+
+(define-syntax stdin
+  (lambda (x)
+    (syntax-case x (set!)
+      ((set! stdin port)
+       #'(set-current-input-port port))
+      ((_ . _)
+       (error "sys.stdin is not a function"))
+      (s #'(current-input-port)))))
+
+(define-syntax stdout
+  (lambda (x)
+    (syntax-case x (set!)
+      ((set! stdin port)
+       #'(set-current-output-port port))
+      ((_ . _)
+       (error "sys.stdin is not a function"))
+      (s #'(current-output-port)))))
+
+(define-syntax stderr
+  (lambda (x)
+    (syntax-case x (set!)
+      ((set! stdin port)
+       #'(set-current-error-port port))
+      ((_ . _)
+       (error "sys.stdin is not a function"))
+      (s #'(current-error-port)))))
+
+(define __stdin__  stdin)
+(define __stdout__ stdout)
+(define __stderr__ stderr)
+
+(define abiflags         '(""))
+(define argv              (command-line))
+(define base_exec_prefix  #f)
+(define base_prefix       #f)
+(define byteorder         (if (eq? (native-endianness) 'little)
+                             "little"
+                             "big"))
+(define builtin_module_names '())
+(define call_tracing
+  (lambda (func args)
+    (apply func args)))
+(define copyright "Stefan Israelsson Tampe")
+(define _clear_type_cache
+  (lambda () (values)))
+(define _current_frames
+  (lambda () '()))
+(define _debugmallocstats
+  (lambda () (values)))
+
+(define dllhandle 0)
+(define displayhook
+  (lambda (value)
+    (when (not (eq? value None))
+      (write stdout (repr value))
+      (set! _ value))))
+(define dont_write_bytecode #f)
+(define excepthook
+  (lambda (type value traceback)
+    (write stderr (repr (list type value traceback)))))
+
+(define __displayhook__ displayhook)
+(define __excepthook__  excepthook)
+
+(define exc_info
+  (lambda () (values)))
+
+(define exec_prefix "/usr/local")
+(define executable "")
+(define exit
+  (lambda arg
+    (apply raise SystemException arg)))
+
+(define flags '())
+(define float_info '())
+(define float_repr_style #f)
+
+(define getallocatedblocks
+  (lambda () 0))
+(define getcheckinterval
+  (lambda () 0))
+
+(define getdefaultencoding
+  (lambda () #f))
+
+(define getdlopenflags
+  (lambda () '()))
+
+(define getfilesystemencoding
+  (lambda () #f))
+
+(define getfilesystemcodeerrors
+  (lambda () #f))
+
+(define getrefcount
+  (lambda () 0))
+
+(define getsizeof
+  (lambda x #f))
+
+(define getswitchinterval
+  (lambda () 0))
+
+(define _getframe
+  (lambda x 0))
+
+(define getwindowsversion
+  (lambda () 0))
+
+(define implementation "guile")
+
+(define int_info #f)
+
+(define __interactivehook__ (lambda () (values)))
+
+
+(define intern (lambda (s) (values)))
+
+(define is_finalizing
+  (lambda () #f))
+
+(define last_type      #f)
+(define last_value     #f)
+(define last_traceback #f)
+    
+(define maxsize #f)
+(define maxunicode #f)
+
+(define meta_path '())
+(define modules (make-hash-table))
+(define path '())
+(define path_hooks '())
+(define path_importer_cache (make-hash-table))
+
+(define platform "linux")
+
+(define prefix "")
+(define ps1    "")
+(define ps2    "")
+
+(define setcheckinterval
+  (lambda (i) (values)))
+
+(define setdlopenflags
+  (lambda (n) (values)))
+
+(define setprofile
+  (lambda (f) (values)))
+
+(define setrecursionlimit
+  (lambda (n) (values)))
+
+(define setswitchinterval
+  (lambda (i) (values)))
+
+(define settrace
+  (lambda (f) (values)))
+
+(define set_asyncgen_hooks
+  (lambda (a b) (values)))
+
+(define set_coroutine_wrappr
+  (lambda (w) (values)))
+
+(define _enablelegacywindowsfsencoding
+  (lambda () (values)))
+
+(define thread_info #f)
+
+(define tracebacklimit 0)
+
+(define version     "0.0.0")
+(define api_version "0.0.0")
+(define version_info '())
+(define warnoptions   #f)
+(define winver        0)
+(define _xoptions    (make-hash-table))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    
+  
+
+    
+