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
|
|
|
|
|
2008-12-06 05:57:38 -05:00
|
|
|
{
|
|
|
|
"locals.macros"
|
|
|
|
"locals.fry"
|
|
|
|
} [ require ] each
|
2008-11-27 22:55:46 -05:00
|
|
|
|
2008-12-08 16:28:27 -05:00
|
|
|
"prettyprint" vocab [
|
|
|
|
"locals.definitions" require
|
|
|
|
"locals.prettyprint" require
|
|
|
|
] when
|