22.1 User pass
Copyright
Acknowledgements
1. Table of contents
2. Overview of Bigloo
3. Modules
4. Core Language
5. Standard Library
6. Pattern Matching
7. Object System
8. Threads
9. Regular parsing
10. Lalr(1) parsing
11. Errors and Assertions
12. Eval and code interpretation
13. Macro expansion
14. Command Line Parsing
15. Explicit typing
16. The C interface
17. The Java interface
18. Bigloo Libraries
19. SRFIs
20. DSSSL support
21. Compiler description
22. User Extensions
23. Bigloo Development Environment
24. Global Index
25. Library Index
Bibliography
|
The extension package system allows the language compiled by Bigloo to be
extended and this is achieved by associating an extension file with a
suffix. The extension file is loaded at the beginning of a compilation
and it can do three things: call extern programs (unix programs); define
macros; modify the values of some of the compiler's variables (for example,
the list of the libraries to be linked with). The Bigloo's initializing
procedure is the following:
For now, two extension packages exist: the Meroon package which
is a native version of the Christian Queinnec object
language; the Camloo [SerranoWeis94] package which is a front
end compiler for the Caml language [Caml-light]
Furthermore, Bigloo supports the -extend option which forces
the usage of an extension file. When Bigloo encounters this option, it
immediately loads the extension file, invoking the function
*extend-entry* with the list of arguments which have not
been parsed yet.
The extension files are always sought in the directory containing the
Bigloo's libraries.
Bigloo allows the user to add a special pass to the regular compilation,
this pass taking place before macro expansion. There are
two ways to add a user pass.
- Add a compiled pass: The module
user_user
(in the ``comptime/User/user.scm'' file) is the user entry pass point.
To add a compiled pass, put the code of the pass in this directory, import
your new modules in user_user and modify the user-walk function.
- Add an interpreted pass: Set the value of
*user-pass* ,
which has to be a unary function, in your .bigloorc file and
Bigloo will invoke it with the code as argument.
|