100 lines
2 KiB
Org Mode
100 lines
2 KiB
Org Mode
-*-mode:org-*-
|
|
* minimal bootstrap binary, via Scheme, into C compiler/linker
|
|
** match
|
|
*** let-syntax
|
|
** define-syntax and syntax-rules
|
|
*** syntax.mes
|
|
**** now syntax-cond.mes --> syntax-if.mes
|
|
Using define-macro-based version.
|
|
** psyntax.pp
|
|
Find out how to hook-up sc-expand in eval/apply.
|
|
** make core smaller
|
|
*** replase mes.c:quasiquote by qq.mes
|
|
*** cleanup environment/closures
|
|
** make core faster
|
|
** bugs
|
|
See bugs/
|
|
** run PEG
|
|
*** Simple Guile test:
|
|
make guile-peg
|
|
*** PEG on Mes does not work yet:
|
|
make peg
|
|
**** v define-syntax-rule
|
|
**** v assq-ref
|
|
**** v assq-set!
|
|
**** datum->syntax
|
|
**** syntax->datum
|
|
**** syntax-case
|
|
** parse C using LALR
|
|
*** v get LALR running paren.scm
|
|
*** Translate cgram.y into lalr, generate AST
|
|
** parse C using PEG
|
|
http://piumarta.com/software/peg/
|
|
** C grammar in lex/yacc
|
|
https://github.com/rabishah/Mini-C-Compiler-using-Flex-And-Yacc
|
|
https://www.lysator.liu.se/c/ANSI-C-grammar-y.html
|
|
http://www2.cs.uidaho.edu/~jeffery/courses/nmsu/370/cgram.y
|
|
https://github.com/ProgramLeague/C-Compilerp
|
|
*** parsing in scheme
|
|
ftp://ftp.cs.indiana.edu/pub/scheme-repository/code/lang/cgram-ll1
|
|
** Tiny C
|
|
https://en.wikipedia.org/wiki/Tiny_C_Compiler
|
|
** Sub C
|
|
http://www.t3x.org/subc/index.html
|
|
**
|
|
https://groups.google.com/forum/#!topic/comp.lang.lisp/VPuX0VsjTTE
|
|
** implement core primitives: DONE
|
|
begin
|
|
define
|
|
if
|
|
lambda
|
|
letrec
|
|
quote
|
|
set!
|
|
** implement minimal needed for psyntax.pp:
|
|
v "string"
|
|
v #(v e c t o r)
|
|
#\CHAR
|
|
v assq
|
|
v call-with-values
|
|
v char?
|
|
v for-each
|
|
v length
|
|
v list
|
|
v list->vector
|
|
v make-vector
|
|
v memq
|
|
v memv
|
|
v string
|
|
v string-append
|
|
v string?
|
|
v symbol?
|
|
v values
|
|
v vector
|
|
v vector->list
|
|
v vector-length
|
|
v vector-ref
|
|
v vector-set!
|
|
v vector?
|
|
v procedure?
|
|
*** any, each?
|
|
*** hook-up sc-expand, see guile-1.0?: scheme:eval-transformer
|
|
*** implement extras:
|
|
v (gensym)
|
|
** implement minimal needed for define-macro-based define-syntax
|
|
v char?
|
|
v assq
|
|
v define-macro
|
|
v equal?
|
|
v member
|
|
v let loop
|
|
v nested define-macro
|
|
v nested define
|
|
v boolean?
|
|
v list?
|
|
v <=, >=
|
|
v string->symbol
|
|
v and
|
|
v or
|
|
v ,@ unquote-splicing
|