Self-hosting Scheme compiling to JavaScript (very incomplete proof-of-concept) [stalled]
 
 
 
 
 
 
Go to file
Mike Gerwitz 431b18e1df
birth,prebirth: Non-recursive lexing to prevent stack exhaustion
This needs to run in the browser too, where we have no control over stack
limits.

* build-aux/bootstrap/birth.scm
  (lex): Non-recursive strategy (loop with mutable list).
  (make-token): Update doc.  Produce list of token, new string, and
    position.  Don't recurse.
  (body->es): Add `ret' param.  Only produce `return' statement if new param
    is set.
  (cdfn): Use it.
  (fnmap)
    [js:while, js:break]: Add forms.
    [lambda, let, case]: Use new `body->es' `ret' param.
    [let*]: Define JS variables in output using `let' instead of `const' to
      permit mutating with new `set!' form.  Use new `body->es' `ret' param.
    [set!]: Add form.
  (prebirth->ecmascript): Adjust libprebirth path to be relative to self.

* build-aux/bootstrap/libprebirth.js
  ($$append$b$): Add `append!' procedure.
  ($$js$regexp, $$js$match, $$js$replace): Move a few lines up.
  (fs): Provide stub if `require' is not defined.

* build-aux/bootstrap/prebirth.js
  (_lex): Non-recursive strategy (loop with array-appending).
  (_token): No more mutual recursion with `#_lex'.  Return new string
    and position.
  (_bodyToEs): Add `ret' param.  Only produce `return' statement if new
    param is set.
  (fnmap) [js:while, js:break]: Add forms.
    [let*]: Define JS variables in output using `let' instead of `const' to
      permit mutating with new `set!' form.  Use new `body->es' `ret' param.
    [set!]: Add form.
2017-10-18 02:41:43 -04:00
build-aux/bootstrap birth,prebirth: Non-recursive lexing to prevent stack exhaustion 2017-10-18 02:41:43 -04:00
COPYING Add README.md and COPYING 2017-08-21 02:19:36 -04:00
README.md Add README.md and COPYING 2017-08-21 02:19:36 -04:00

README.md

General Interactive Block-Based Learning Environment (Gibble)

Cute name, little information.

Check back later. I have plenty of information to give, but it is all fairly information and chaotic notes that need to be organized. Besides, you're not supposed to even see the repository in this state (outside of its history, at least)---what are you doing here!? Intruder! Prepare thyself for the wrath of the Gibble!

                                 _   _
                              ,--O---O--.
                             |           |
                             |           |
                              `---------'