diff options
Diffstat (limited to 'app/Parser.hs')
| -rw-r--r-- | app/Parser.hs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/app/Parser.hs b/app/Parser.hs index a9e4473..864cdc5 100644 --- a/app/Parser.hs +++ b/app/Parser.hs @@ -145,7 +145,7 @@ instance TraversableStream [Lexeme] where data PAST = Call String [[PAST]] | Seq [PAST] - | List [PAST] (Maybe [PAST]) + | List [[PAST]] (Maybe [PAST]) | Literal String deriving (Show, Eq) @@ -181,7 +181,7 @@ list = do free lBracket choice [ List [] Nothing <$ free rBracket - , do items <- some seqItem + , do items <- splitOn [Literal ","] <$> some seqItem choice [ List items Nothing <$ free rBracket , List items . Just <$> @@ -223,7 +223,8 @@ shuntPrlg :: Ops -> PAST -> ShuntResult shuntPrlg ot = shuntPrlg' (("", Op 0 $ Infix X Y) : ot) shuntPrlg' :: Ops -> PAST -> ShuntResult -shuntPrlg' ot (List _ _) = err "no lists yet" +shuntPrlg' ot (List hs t) = + ListS <$> traverse (shunt ot) hs <*> traverse (shunt ot) t shuntPrlg' ot (Seq ss) = shunt ot ss shuntPrlg' ot (Literal s) = pure (LiteralS s) shuntPrlg' ot (Call fn ss) = CallS fn <$> traverse (shunt ot) ss |
