From 204169f26907828d5310845a94af7c4ffafa6cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 11 Apr 2026 16:11:58 +0200 Subject: Tag definition --- src/Parser.hs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/Parser.hs') diff --git a/src/Parser.hs b/src/Parser.hs index 9f1a0e3..d3b8f73 100644 --- a/src/Parser.hs +++ b/src/Parser.hs @@ -125,13 +125,23 @@ parseAsset href = label "asset definition" $ do modify $ \s -> s { testVars = ( name, ( GlobalVarName (testCurrentModuleName s) name, someExprType expr )) : testVars s } return ( name, expr ) +parseTag :: Pos -> TestParser ( VarName, SomeExpr ) +parseTag _ = label "tag definition" $ do + wsymbol "tag" + name <- constrName + void eol + cmn <- gets testCurrentModuleName + let expr = SomeExpr $ Pure $ Tag cmn name + modify $ \s -> s { testVars = ( name, ( GlobalVarName cmn name, someExprType expr )) : testVars s } + return ( name, expr ) + parseExport :: TestParser [ Toplevel ] parseExport = label "export declaration" $ toplevel id $ do ref <- L.indentLevel wsymbol "export" choice [ do - def@( name, _ ) <- parseDefinition ref <|> parseAsset ref + def@( name, _ ) <- parseDefinition ref <|> parseAsset ref <|> parseTag ref return [ ToplevelDefinition def, ToplevelExport name ] , do names <- listOf varName @@ -168,6 +178,7 @@ parseTestModule absPath = do [ (: []) <$> parseTestDefinition , (: []) <$> toplevel ToplevelDefinition (parseDefinition pos1) , (: []) <$> toplevel ToplevelDefinition (parseAsset pos1) + , (: []) <$> toplevel ToplevelDefinition (parseTag pos1) , parseExport , parseImport ] -- cgit v1.2.3