[parenscript-devel] Package system, new reader, compilation interface changes, and more refactoring
Vladimir Sedach
vsedach at gmail.com
Thu Jul 26 20:45:55 UTC 2007
I finally got around to looking at the changes today. Neat! I pushed
some patches that cleaned up a few of the deprecated bits, and
restored the Lisp/ParenScript macro defining stuff (I'm surprised you
haven't made use of them - that stuff is IMO one of the best features
of PS).
Vladimir
On 7/25/07, Red Daly <reddaly at gmail.com> wrote:
> Dear Parenscripters,
>
> I have made some significant changes to the source code. The impetus for
> most of my changes was the creation of a package system for Parenscript.
> This is a brief, rambling explanation of my changes to the code base and is
> by no means a full documentation of new features.
>
> The compilation interface is now contained in 'compilation-interface.lisp'.
> The main functions for compiling Parenscript to Javascript are
> COMPILE-SCRIPT, COMPILE-SCRIPT-FILE, and the macro SCRIPT.
>
> The package system is very similar to Lisp's package system because it
> works on the symbol level. A script package has an associated lisp package
> that it uses to intern all of that script package's symbols. This way, the
> parenscript package of any (lisp) symbol can be determined by looking at the
> lisp package of any lisp symbol. The Parenscript compiler mandates that
> every symbol have an associated script package. As a result, the compiler
> now assigns semantic meaning to both a symbol's name and package--before
> only the string name of a symbol had any bearing on the resultant code.
>
> There are a few packages that come standard issue (see
> builtin-packages.lisp). The macros provided by the Parenscript language are
> split into two package: PARENSCRIPT and JAVASCRIPT. JAVASCRIPT contains
> special forms that are eventually translated directly to Javascript ( e.g.
> defvar, lambda, with). The PARENSCRIPT package is the package most users
> will use and contains the rest of the special forms/macros described in the
> documentation (e.g. macrolet, let, html).
>
> There is now a Parenscript reader thanks to the BSD-licensed Sacla
> project[SACLA]. Parenscript can use either the Lisp reader or the
> Parenscript reader to read objects from source text. Generally, Parenscript
> embedded in Lisp will use the Lisp reader, and Parenscript in Parenscript
> files (*.paren) will use the Parenscript reader. (Though perhaps in the
> future the Parenscript reader will be preferred.) It is possible to use the
> Lisp reader within the Parenscript reader with the reader macro
> #L(lisp-form), which may be useful for some reason. Parenscript does not
> currently interfere with the Lisp reader by introducing reader macros. There
> are only a few differences between the readers:
> # The Parenscript reader will not obey defined reader macros from the Lisp
> reader
> # The Parenscript reader understands Parenscript package names as package
> prefixes and
> does NOT understand Lisp package names as package prefixes.
> # The Lisp reader does not understand Parenscript package names but does
> understand Lisp package names as symbol prefixes.
>
> I broke up source-model.lisp into js-source-model.lisp and
> ps-source-model.lisp to correspond to the underlying Javascript and
> Parenscript special forms. I broke up parser.lisp into parser.lisp,
> js-macrology, and ps-macrology: the macrology files define macros for
> javascript and parenscript; parser.lisp contains the functionality for
> parsing S-expressions into the objects defined in the source-model files. I
> moved js-html and js-css to the lib/ subdirectory; eventually these should
> probably be members of other packages.
>
> All tests currently pass and I am adding more tests. More on the package
> system later, after I have made use of it myself.
>
>
> Happy hacking,
> Red Daly
>
> [SACLA]
> http://homepage1.nifty.com/bmonkey/lisp/sacla/index-en.html
>
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
>
More information about the parenscript-devel
mailing list