Sat Apr 25 17:53:24 CEST 2009

scat in terms of new rpn syntax

rpn-scat.ss is quite simple now
let's start taking out the entire old parser and work up from here.

I don't remember what rpn-wrap is about.  Taking out shift/reset.

(ns (scat) (define-syntax reset (rpn-wrap (expr) #`(reset-at scat-prompt #,expr))))
(ns (scat) (define-syntax shift (rpn-wrap (expr) #`(shift-at scat-prompt k #,((rpn-immediate) #'k expr)))))

For the rest it seems to work fine.

next is coma.

From macro-syntax.ss i don't know what this is about:

(define-sr (define-procedure name)
  (ns (macro) (define name
                (postponed-word 'name))))

now, looks like tscat: isn't so trivial.. let's see.

indeed.. What it does is to figure out whether a variable is locally
bound (i.e. not a module import or toplevel) and depending on this
will perform some action.

this is the worst kind of reflection there is.. how can this be

Hmm.. it's not so bad.  It's about the input of tscat: itself, not
some inside behaviour mod.  Can probably just be copied:

;; Operate on rpn code body, processing lexical and other variables.
(define (rpn-lex-mapper fn-lex [fn-no-lex (lambda (x) x)])
  (lambda (stx-lst)
     (lambda (stx)
        (and (identifier? stx)
             (lexical-binding? stx))
        (fn-lex stx)
        (fn-no-lex stx)))