diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-02-16 12:49:08 +0100 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2018-02-16 12:49:08 +0100 |
commit | 7bdf92ff183ac2f1edc942f644a050853bf50a3d (patch) | |
tree | ed1403fc18c18289d3146aec82416aeade2021a5 /modules/language | |
parent | d4f5255498d07b424ba5d6b8535aedc3ec40808a (diff) |
sys module
Diffstat (limited to 'modules/language')
-rw-r--r-- | modules/language/python/exceptions.scm | 23 | ||||
-rw-r--r-- | modules/language/python/module/re.scm | 52 | ||||
-rw-r--r-- | modules/language/python/module/sys.scm | 208 |
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)) + + + + + + + + + + + + + + + + + + + + + |