factor/basis/locals/locals.factor

43 lines
995 B
Factor
Raw Normal View History

2008-01-06 11:17:38 -05:00
! Copyright (C) 2007, 2008 Slava Pestov, Eduardo Cavazos.
! See http://factorcode.org/license.txt for BSD license.
2008-12-09 02:04:22 -05:00
USING: lexer macros memoize parser sequences vocabs
vocabs.loader words kernel namespaces locals.parser locals.types
locals.errors ;
2007-09-20 18:09:08 -04:00
IN: locals
2008-12-09 02:04:22 -05:00
: :>
scan locals get [ :>-outside-lambda-error ] unless*
[ make-local ] bind <def> parsed ; parsing
2007-09-20 18:09:08 -04:00
2008-05-07 09:48:51 -04:00
: [| parse-lambda parsed-lambda ; parsing
2007-09-20 18:09:08 -04:00
: [let
2008-11-29 06:14:49 -05:00
"|" expect "|" parse-bindings
2008-05-07 09:48:51 -04:00
\ ] (parse-lambda) <let> parsed-lambda ; parsing
2008-03-19 22:16:09 -04:00
: [let*
2008-11-29 06:14:49 -05:00
"|" expect "|" parse-bindings*
2008-05-07 09:48:51 -04:00
\ ] (parse-lambda) <let*> parsed-lambda ; parsing
2007-09-20 18:09:08 -04:00
: [wlet
2008-11-29 06:14:49 -05:00
"|" expect "|" parse-wbindings
2008-05-07 09:48:51 -04:00
\ ] (parse-lambda) <wlet> parsed-lambda ; parsing
2007-09-20 18:09:08 -04:00
2008-02-26 19:40:32 -05:00
: :: (::) define ; parsing
2008-03-16 03:43:00 -04:00
: M:: (M::) define ; parsing
2008-02-26 19:40:32 -05:00
: MACRO:: (::) define-macro ; parsing
2007-09-20 18:09:08 -04:00
2008-04-27 02:46:38 -04:00
: MEMO:: (::) define-memoized ; parsing
{
"locals.macros"
"locals.fry"
} [ require ] each
2008-12-08 16:28:27 -05:00
"prettyprint" vocab [
"locals.definitions" require
"locals.prettyprint" require
] when