73 lines
1.5 KiB
Factor
73 lines
1.5 KiB
Factor
USING: accessors assocs compiler.units kernel lexer locals.backend
|
|
locals.parser namespaces parser prettyprint sequences sorting
|
|
tools.test vocabs vocabs.parser ;
|
|
IN: locals.parser.tests
|
|
|
|
! XXX: remove the << and >> below and make test-all pass
|
|
|
|
<<
|
|
! (::)
|
|
{
|
|
"dobiedoo"
|
|
[ 1 load-locals 1 drop-locals ]
|
|
( x -- y )
|
|
} [
|
|
[
|
|
{ "dobiedoo ( x -- y ) ;" } <lexer> [ (::) ] with-lexer
|
|
] with-compilation-unit
|
|
[ name>> ] 2dip
|
|
] unit-test
|
|
|
|
! parse-def
|
|
{ "um" t } [
|
|
[
|
|
"um" parse-def
|
|
local>> name>>
|
|
qualified-vocabs last words>> keys "um" swap member?
|
|
] with-compilation-unit
|
|
] unit-test
|
|
>>
|
|
|
|
! check-local-name
|
|
{ "hello" } [
|
|
"hello" check-local-name
|
|
] unit-test
|
|
|
|
! make-locals
|
|
{ { "a" "b" "c" } } [
|
|
[ { "a" "b" "c" } make-locals ] with-compilation-unit
|
|
nip values [ name>> ] map
|
|
] unit-test
|
|
|
|
! parse-local-defs
|
|
{ { "tok1" "tok2" } } [
|
|
[
|
|
{ "tok1 tok2 |" } <lexer> [ parse-local-defs ] with-lexer
|
|
] with-compilation-unit
|
|
nip values [ name>> ] map
|
|
] unit-test
|
|
|
|
! parse-multi-def
|
|
{
|
|
{ "tok1" "tok2" }
|
|
{ "tok1" "tok2" }
|
|
} [
|
|
[
|
|
{ "tok1 tok2 )" } <lexer> [ parse-multi-def ] with-lexer
|
|
] with-compilation-unit
|
|
[ locals>> [ name>> ] map ] [ keys ] bi*
|
|
] unit-test
|
|
|
|
<<
|
|
{
|
|
"V{ 99 :> kkk kkk }"
|
|
} [
|
|
[
|
|
"locals" use-vocab
|
|
{ "99 :> kkk kkk ;" } <lexer> [
|
|
H{ } clone [ \ ; parse-until ] with-lambda-scope
|
|
] with-lexer
|
|
] with-compilation-unit unparse
|
|
] unit-test
|
|
>>
|