From 75b1fbd6f4425078709a3412848c1ff45b06b1e0 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sat, 22 Feb 2020 20:37:10 -0800 Subject: [PATCH] lists: simplify parse-list-literal to fix bootstrap issue. --- basis/lists/lists.factor | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/basis/lists/lists.factor b/basis/lists/lists.factor index 0251f95c50..c47b0b3d26 100644 --- a/basis/lists/lists.factor +++ b/basis/lists/lists.factor @@ -105,23 +105,28 @@ M: list >list ; M: sequence >list sequence>list ; -: items>list ( seq -- cons-pair ) - dup empty? [ drop +nil+ ] [ - reverse unclip swap [ swap cons ] each - ] if ; +list ( sequence -- list ) + [ +nil+ ] [ + unclip-slice [ swons ] reduce + ] if-empty ; + +: (parse-list-literal) ( right-of-dot? -- ) + scan-token { + { "}" [ drop +nil+ , ] } + { "." [ drop t (parse-list-literal) ] } [ parse-datum dup parsing-word? [ V{ } clone swap execute-parsing first ] when - , right-of-dot? [ "}" expect ] [ f (parse-list-literal) ] if ] + , [ "}" expect ] [ f (parse-list-literal) ] if + ] } case ; -: parse-list-literal ( accum -- accum object ) +: parse-list-literal ( -- list ) [ f (parse-list-literal) ] { } make items>list ; +PRIVATE> + SYNTAX: L{ parse-list-literal suffix! ;