Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / basis / locals / locals.factor
blobf745f6243f49fc0ad5986233d15f0e3e8143ed61
1 ! Copyright (C) 2007, 2008 Slava Pestov, Eduardo Cavazos.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: lexer macros memoize parser sequences vocabs
4 vocabs.loader words kernel namespaces locals.parser locals.types
5 locals.errors ;
6 IN: locals
8 : :>
9     scan locals get [ :>-outside-lambda-error ] unless*
10     [ make-local ] bind <def> parsed ; parsing
12 : [| parse-lambda parsed-lambda ; parsing
14 : [let
15     "|" expect "|" parse-bindings
16     \ ] (parse-lambda) <let> parsed-lambda ; parsing
18 : [let*
19     "|" expect "|" parse-bindings*
20     \ ] (parse-lambda) <let*> parsed-lambda ; parsing
22 : [wlet
23     "|" expect "|" parse-wbindings
24     \ ] (parse-lambda) <wlet> parsed-lambda ; parsing
26 : :: (::) define ; parsing
28 : M:: (M::) define ; parsing
30 : MACRO:: (::) define-macro ; parsing
32 : MEMO:: (::) define-memoized ; parsing
35     "locals.macros"
36     "locals.fry"
37 } [ require ] each
39 "prettyprint" vocab [
40     "locals.definitions" require
41     "locals.prettyprint" require
42 ] when