Ludovic Courtès
eb80072df0
Change the Elisp compiler from GPLv2+ to LGPLv3+.
...
* module/language/elisp/bindings.scm, module/language/elisp/lexer.scm,
module/language/elisp/parser.scm, module/language/elisp/runtime.scm,
module/language/elisp/runtime/function-slot.scm,
module/language/elisp/runtime/macro-slot.scm,
module/language/elisp/runtime/value-slot.scm: Switch from GPLv2+ to
LGPLv3+; fix copyright year.
2009-12-15 19:10:48 +01:00
Daniel Kraft
f4dc86f137
Implement catch and unwind-protect as macros.
...
* module/language/elisp/compile-tree-il.scm: Remove catch and unwind-protect.
* module/language/elisp/runtime/macro-slot.scm: Re-implement them here.
2009-08-03 18:22:12 +02:00
Daniel Kraft
bfd472a7d3
Use explicit guile-primitive forms in the macro expansion of dotimes and dolist.
2009-07-30 21:49:00 +02:00
Daniel Kraft
e6042c08b7
Implement some elisp constructs in macros instead of hard-coded compiler code.
...
* module/language/elisp/compile-tree-il.scm: Remove implementation of prog1,
and, or, cond, dolist.
* module/language/elisp/runtime/macro-slot.scm: Implement them here instead.
2009-07-30 21:43:24 +02:00
Daniel Kraft
e96a9591ce
funcall, apply and eval built-ins.
...
* module/language/elisp/README: Document new features.
* module/language/elisp/runtime/function-slot.scm: Implement funcall, apply and
eval by using the existing compiler code.
* test-suite/tests/elisp-compiler.test: Test those.
2009-07-29 16:27:45 +02:00
Daniel Kraft
c2c7c27755
Added length built-in.
...
* module/language/elisp/runtime/function-slot.scm: Add length built-in.
* test-suite/tests/elisp-compiler.test: Test length.
2009-07-29 13:45:40 +02:00
Daniel Kraft
3709984696
Implemented dynamic symbol access built-ins (set, fset, symbol-value, makunbound...)
...
* module/language/elisp/README: Document it.
* module/language/elisp/compile-tree-il.scm: Moved ensure-fluid! to runtime function.
* module/language/elisp/runtime.scm: Runtime functions to support dynamic value access.
* module/language/elisp/runtime/function-slot.scm: Defined the built-ins.
* test-suite/tests/elisp-compiler.test: Test them.
2009-07-23 14:09:55 +02:00
Daniel Kraft
33da12eeff
Added guile-ref extension construct, change throw implementation to easier one using a built-in function and implement unwind-protect.
...
* module/language/elisp/README: Document the changes.
* module/language/elisp/compile-tree-il.scm: Implement unwind-protect.
* module/language/elisp/runtime/function-slot.scm: throw as built-in.
* test-suite/tests/elisp-compiler.test: Test unwind-protect.
2009-07-22 12:50:56 +02:00
Daniel Kraft
fb66a47a8e
Implemented prog1, prog2, dotimes, dolist control structures.
...
* module/language/elisp/README: Document it and some further ideas written down.
* module/language/elisp/compile-tree-il.scm: Implement prog1, dolist.
* module/language/elisp/runtime/macro-slot.scm: prog2 and dotimes.
* test-suite/tests/elisp-compiler.test: Test prog1, prog2, dotimes, dolist.
2009-07-20 20:52:00 +02:00
Daniel Kraft
f614ca12cd
Implemented some important list built-ins.
...
* module/language/elisp/runtime.scm: Updated/added convenience macros.
* module/language/elisp/runtime/function-slot.scm: Implement list built-ins.
* module/language/elisp/runtime/macro-slot.scm: Implement list built-ins.
* test-suite/tests/elisp-compiler.test: Test the implemented built-ins.
2009-07-18 20:10:24 +02:00
Daniel Kraft
7d1a978289
Implemented unless, when and dotimes using built-in macros.
...
* module/language/elisp/README: Document that.
* module/language/elisp/runtime.scm: Defined built-in-macro macro.
* module/language/elisp/runtime/macro-slot.scm: Implement unless, when, dotimes.
* test-suite/tests/elisp-compiler.test: Test for those constructs.
2009-07-18 18:38:42 +02:00
Daniel Kraft
e905e490fa
Implemented eq and equal built-in predicates.
...
* module/language/elisp/runtime/function-slot.scm: Implement eq and equal.
* test-suite/tests/elisp-compiler.test: Test them.
2009-07-18 17:21:55 +02:00
Daniel Kraft
74c009dadc
Implemented macros in elisp compiler.
...
* module/language/elisp/README: Document it.
* module/language/elisp/compile-tree-il.scm: Implement defmacro and expansion.
* module/language/elisp/runtime/macro-slot.scm: New module to keep definitions.
* test-suite/Makefile.am: Add elisp-compiler.test to list of tests.
* test-suite/tests/elisp-compiler.test: Basic macro tests.
2009-07-16 15:23:38 +02:00
Daniel Kraft
b6b9d59604
Extended test-suite to cover already implemented built-ins and fixed errors found.
...
* module/language/elisp/runtime/function-slot.scm: Fixed errors in number preds.
* test-suite/tests/elisp-compiler.test: Test built-ins already implemented.
2009-07-16 14:28:07 +02:00
Daniel Kraft
09241ea7f7
Removed wrong not in zerop built-in.
...
* module/language/elisp/runtime/function-slot.scm: Fix zerop.
2009-07-15 13:51:19 +02:00
Daniel Kraft
1e018f6c67
Some bug fixes on the way and mainly implemented some built-ins (arithmetic).
...
* module/language/elisp/README: Document changes.
* module/language/elisp/compile-tree-il.scm: Bug fixes to fluid-creation.
* module/language/elisp/runtime.scm: Some helping definitions for built-ins.
* module/language/elisp/runtime/function-slot.scm: Defined artihmetic built-ins.
2009-07-13 18:35:57 +02:00
Daniel Kraft
f28de79197
Automatically create fluids when necessary.
...
* module/language/elisp/README: Document that.
* module/language/elisp/compile-tree-il.scm: Create fluids when necessary.
* module/language/elisp/runtime/function-slot.scm: Fix module name.
2009-07-13 17:26:07 +02:00
Daniel Kraft
344927c3f8
Implemented fluid-based variable references and setting using setq.
...
* module/language/elisp/README: Document this.
* module/language/elisp/compile-tree-il.scm: Implement variable references, setq
* module/language/elisp/runtime.scm: New file for runtime definitions.
* module/language/elisp/runtime/function-slot.scm: Ditto.
* module/language/elisp/runtime/value-slot.scm: Ditto.
2009-07-03 23:00:12 +02:00