summaryrefslogtreecommitdiff
path: root/modules/language
diff options
context:
space:
mode:
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-02-16 12:49:08 +0100
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-02-16 12:49:08 +0100
commit7bdf92ff183ac2f1edc942f644a050853bf50a3d (patch)
treeed1403fc18c18289d3146aec82416aeade2021a5 /modules/language
parentd4f5255498d07b424ba5d6b8535aedc3ec40808a (diff)
sys module
Diffstat (limited to 'modules/language')
-rw-r--r--modules/language/python/exceptions.scm23
-rw-r--r--modules/language/python/module/re.scm52
-rw-r--r--modules/language/python/module/sys.scm208
3 files changed, 257 insertions, 26 deletions
diff --git a/modules/language/python/exceptions.scm b/modules/language/python/exceptions.scm
index 413abe1..51928b9 100644
--- a/modules/language/python/exceptions.scm
+++ b/modules/language/python/exceptions.scm
@@ -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__
diff --git a/modules/language/python/module/re.scm b/modules/language/python/module/re.scm
index 0efbec9..48259e8 100644
--- a/modules/language/python/module/re.scm
+++ b/modules/language/python/module/re.scm
@@ -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!
@@ -36,12 +39,12 @@
(.. 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)
@@ -53,12 +56,31 @@
(.. 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
@@ -158,7 +180,7 @@
(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))))
@@ -216,9 +238,9 @@
(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
index 0000000..0df5bb1
--- /dev/null
+++ b/modules/language/python/module/sys.scm
@@ -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))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+