cherry issueshttps://gitlab.tha-imax.de/ruun/cherry/-/issues2017-10-28T07:41:57Zhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/9Primitive statement macros2017-10-28T07:41:57ZChris MüllerPrimitive statement macrosCherry should support the following statements
* if
* cond (multi condition if statement)
* let (constants)
* define (functions)
* loop (syntax suger for recursion)
* begin (sequencing)
* match (pattern matching, improved case)Cherry should support the following statements
* if
* cond (multi condition if statement)
* let (constants)
* define (functions)
* loop (syntax suger for recursion)
* begin (sequencing)
* match (pattern matching, improved case)Alpha Version 0.1Chris MüllerChris Müllerhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/8Simple module system2017-10-28T07:41:57ZChris MüllerSimple module systemCherry should support a simple module system depending on the location
of a file from a loadpath.
* Add loadpath options to interpreter / compiler
* Add search routines fro modules in loadpath
* Add import statementsCherry should support a simple module system depending on the location
of a file from a loadpath.
* Add loadpath options to interpreter / compiler
* Add search routines fro modules in loadpath
* Add import statementsAlpha Version 0.1Chris MüllerChris Müllerhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/7loop instructions is not isolating environment properly2017-10-28T07:41:57ZChris Müllerloop instructions is not isolating environment properlyExample:
(define (split lst)
(loop (go (xs lst))
(if (null? xs)
0
(go (tail xs)))))
(define (fun)
(let xs (list 1 2 3))
(println "A: " xs)
(let y (split xs))
(println "B: " xs)
==> Output...Example:
(define (split lst)
(loop (go (xs lst))
(if (null? xs)
0
(go (tail xs)))))
(define (fun)
(let xs (list 1 2 3))
(println "A: " xs)
(let y (split xs))
(println "B: " xs)
==> Output:
A: (1 2 3)
B: ()
There seems a link between loop's xs and fun's xs (which should be actually isolated)Alpha Version 0.1Chris MüllerChris Müllerhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/6Error messaging system2017-10-28T07:41:57ZChris MüllerError messaging systemCurrently the error messaging system in the interpreter and repl is a completely mess.
Introduce a uniform interface for writing error messages to stderr with including file- and line information.Currently the error messaging system in the interpreter and repl is a completely mess.
Introduce a uniform interface for writing error messages to stderr with including file- and line information.Alpha Version 0.1Chris MüllerChris Müllerhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/5org_cherry_eval should support tail recursion2017-10-28T07:41:57ZChris Müllerorg_cherry_eval should support tail recursionorg_cherry_eval should not grow the internal c stack if a tail recursive function is
evaluated. e.g.:
(define (upto n)
(if (> n 0) (upto (- n 1)) 0)) org_cherry_eval should not grow the internal c stack if a tail recursive function is
evaluated. e.g.:
(define (upto n)
(if (> n 0) (upto (- n 1)) 0)) Alpha Version 0.1Chris MüllerChris Müllerhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/3Execute MD5 Cracker2017-10-28T07:41:57ZChris MüllerExecute MD5 CrackerImplement a md5 bruteforce cracker in cherry and run it with the interpreter.Implement a md5 bruteforce cracker in cherry and run it with the interpreter.Alpha Version 0.1Chris MüllerChris Müllerhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/2Extend runtime environment with necessary core primitives2017-10-28T07:41:57ZChris MüllerExtend runtime environment with necessary core primitivesThe runtime environment needs a proper set of primitives for
converting, processing and handling cherry's datatypes. The following functions
should be available:
Arithmetic:
* or
* and
* not
* + (Addition)
* - (Subtraction)
* ...The runtime environment needs a proper set of primitives for
converting, processing and handling cherry's datatypes. The following functions
should be available:
Arithmetic:
* or
* and
* not
* + (Addition)
* - (Subtraction)
* * (Multiplication)
* / (Division)
* mod (Modulo)
* rem (Remainder)
* = (arithmetic equal)
* equal? (structure equal)
Lists:
* list?
* list->string
* length
* cons
* head
* tail
* get
* sublist
* reverse
* range
* append
* filter
* map
Strings:
* string?
* string-eq?
* string->list
* string->symbol
* string->fixnum
* string->float
* string-length
* substring
Alpha Version 0.1Chris MüllerChris Müllerhttps://gitlab.tha-imax.de/ruun/cherry/-/issues/1Many Segfaults within parsing- and evalutation process2017-10-28T07:41:57ZChris MüllerMany Segfaults within parsing- and evalutation processThe parsing- and evaluation process is currently a naive vanilla implementation with direct access to cherry's list structure. Any undefined syntax can result in accessing null pointers
and a corresponding segmentation fault.
Syntax...The parsing- and evaluation process is currently a naive vanilla implementation with direct access to cherry's list structure. Any undefined syntax can result in accessing null pointers
and a corresponding segmentation fault.
Syntax checks and some verifying unittests are needed.Alpha Version 0.1Chris MüllerChris Müller