d114634203
* scripts/elf.mes: New file. * scripts/include.mes: New file. * scripts/mescc.mes: New file. * scripts/paren.mes: New file. * scripts/repl.mes: New file. * doc/examples/main.c: Move from ./main.c. * module/mes/base-0.mes: Move from ./base0.mes. * module/mes/base.mes: Move from top. * module/mes/elf.mes: Likewise. * module/mes/let-syntax.mes: Likewise. * module/mes/let.mes: Likewise. * module/mes/mes.mes: Likewise. * module/mes/quasiquote.mes: Likewise. * module/mes/repl.mes: Likewise. * module/mes/scm.mes: Likewise. * module/mes/syntax.mes: Likewise. * module/mes/lalr-0.mes: Move from lib/lalr.mes. * module/mes/lalr.mes: Move from lib/lalr.scm. * module/mes/match.mes: Move from lib/match.scm. * module/mes/record-0.mes: Move from lib/record.mes. * module/mes/record.mes: Move from lib/record.scm. * module/mes/test.mes: Move flom lib/. * module/rnrs/bytevectors.mes: Move from lib/rnrs. * module/srfi/srfi-0.mes: Move from lib/srfi. * module/srfi/srfi-1.mes: Likewise. * module/srfi/srfi-9.mes: Likewise. * module/language/c/lexer.mes: Move from ./c-lexer.scm. * module/language/c/parser.mes: Move from ./mescc.scm. * module/language/c/compiler.mes: New file, split from parser.mes. * module/language/paren.mes: Move from ./paren.scm. * module/mes/libc-i386.mes: New file, split from elf.mes. * tests/base.test: Move from test/. * tests/closure.test: Likewise. * tests/let-syntax.test: Likewise. * tests/let.test: Likewise. * tests/match.test: Likewise. * tests/quasiquote.test: Likewise. * tests/record.test: Likewise. * tests/scm.test: Likewise. * hello.S: Remove. * hello.c: Remove. * loop2.mes: Remove. * test/foo.test: Remove.
97 lines
2.6 KiB
Org Mode
97 lines
2.6 KiB
Org Mode
-*-mode:org-*-
|
|
|
|
* minimal bootstrap binary, via Scheme, into C compiler/linker
|
|
** core: mes.c
|
|
*** make mes.c smaller
|
|
**** replace mes.c:quasiquote by quasiquote.mes
|
|
***** SPEEDUP
|
|
**** cleanup environment/closures
|
|
*** make mes.c faster
|
|
*** use GC
|
|
*** move from C to hex/assembly
|
|
|
|
** bugs
|
|
See bugs/
|
|
|
|
*** find/fix hygiene problem: see lib/match.scm ;; X vs x
|
|
Is it in let, define-syntax, match or intrinsically in define-macro?
|
|
|
|
** parse C using PEG
|
|
http://piumarta.com/software/peg/
|
|
*** Simple Guile test:
|
|
make guile-peg
|
|
*** PEG on Mes does not work yet:
|
|
make peg
|
|
**** syntax-case
|
|
***** portable syntax-case Andre van Tonder
|
|
***** psyntax.pp
|
|
***** hook-up sc-expand, see guile-1.0?: scheme:eval-transformer
|
|
Find out how to hook-up sc-expand in eval/apply.
|
|
|
|
** parse C using LALR
|
|
*** Translate cgram.y into lalr, generate AST
|
|
*** 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
|
|
*** any, each?
|
|
|
|
|
|
* assorted info
|
|
** ASM
|
|
http://www.tldp.org/HOWTO/Assembly-HOWTO/linux.html
|
|
|
|
Basically, you issue an int 0x80, with the __NR_syscallname number
|
|
(from asm/unistd.h) in eax, and parameters (up to six) in ebx, ecx,
|
|
edx, esi, edi, ebp respectively.
|
|
|
|
** ELF
|
|
7f 45 4c 46
|
|
|
|
http://www.muppetlabs.com/~breadbox/software/tiny/
|
|
|
|
http://www.cirosantilli.com/elf-hello-world/
|
|
|
|
** SCM
|
|
** RNRS
|
|
http://www.scheme-reports.org/
|
|
*** Scheme
|
|
ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-349.pdf
|
|
*** RRS
|
|
ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-452.pdf
|
|
|
|
http://groups.csail.mit.edu/mac/ftpdir/scm/OLD/scm2e.tar.Z
|
|
wget http://groups.csail.mit.edu/mac/ftpdir/scm/OLD/scm3c13.tar.Z
|
|
http://groups.csail.mit.edu/mac/ftpdir/scm/OLD/scm4a5.tar.Z
|
|
|
|
http://groups.csail.mit.edu/mac/ftpdir/scm/OLD/scm5a1.tar.gz --> syntax-rules
|
|
http://groups.csail.mit.edu/mac/ftpdir/scm/OLD/scm5c0.tar.gz
|
|
|
|
|
|
define-
|
|
|
|
http://www.cs.indiana.edu/chezscheme/syntax-case/old-psyntax.html
|
|
|
|
http://www.cs.indiana.edu/chezscheme/syntax-case/
|
|
|
|
1.4..2.9:
|
|
http://groups.csail.mit.edu/mac/ftpdir/siod/
|
|
|
|
http://groups.csail.mit.edu/mac/ftpdir/s48/archive/scheme48-0-21.tar.gz
|
|
|
|
Macros:
|
|
http://www.bcl.hamilton.ie/~barak/teach/F97/CS257/macros.html
|
|
|
|
|
|
syntax-case/syntax-rules in clojure
|
|
https://github.com/qbg/syntax-rules/blob/master/src/qbg/syntax_rules.clj
|