bugfix in the ai command

This commit is contained in:
krasimir
2009-09-17 13:14:04 +00:00
parent 6c7330131d
commit 49ca46d958
2 changed files with 10 additions and 6 deletions

View File

@@ -615,12 +615,15 @@ allCommands cod env@(pgf, mos) = Map.fromList [
}), }),
("ai", emptyCommandInfo { ("ai", emptyCommandInfo {
longname = "abstract_info", longname = "abstract_info",
syntax = "ai IDENTIFIER", syntax = "ai IDENTIFIER or ai EXPR",
synopsis = "provides an information about a function or a category from the abstract syntax", synopsis = "Provides an information about a function, an expression or a category from the abstract syntax",
explanation = unlines [ explanation = unlines [
"The command has one argument which is either function or a category defined in", "The command has one argument which is either function, expression or",
"the abstract syntax of the current grammar. If the argument is a function then", "a category defined in the abstract syntax of the current grammar. ",
"its type is printed out. If it is a category then the category definition is printed" "If the argument is a function then ?its type is printed out.",
"If it is a category then the category definition is printed.",
"If a whole expression is given it prints the expression with refined",
"metavariables and the type of the expression."
], ],
exec = \opts arg -> do exec = \opts arg -> do
case arg of case arg of

View File

@@ -186,10 +186,11 @@ ppExpr d scope (EFun f) = ppCId f
ppExpr d scope (EVar i) = ppCId (scope !! i) ppExpr d scope (EVar i) = ppCId (scope !! i)
ppExpr d scope (ETyped e ty)= ppParens (d > 0) (ppExpr 0 scope e PP.<+> PP.colon PP.<+> ppType 0 scope ty) ppExpr d scope (ETyped e ty)= ppParens (d > 0) (ppExpr 0 scope e PP.<+> PP.colon PP.<+> ppType 0 scope ty)
ppPatt :: Int -> [CId] -> Patt -> ([CId],PP.Doc)
ppPatt d scope (PApp f ps) = let (scope',ds) = mapAccumL (ppPatt 2) scope ps ppPatt d scope (PApp f ps) = let (scope',ds) = mapAccumL (ppPatt 2) scope ps
in (scope',ppParens (not (List.null ps) && d > 1) (ppCId f PP.<+> PP.hsep ds)) in (scope',ppParens (not (List.null ps) && d > 1) (ppCId f PP.<+> PP.hsep ds))
ppPatt d scope (PLit l) = (scope,ppLit l) ppPatt d scope (PLit l) = (scope,ppLit l)
ppPatt d scope (PVar f) = (scope,ppCId f) ppPatt d scope (PVar f) = (f:scope,ppCId f)
ppPatt d scope PWild = (scope,PP.char '_') ppPatt d scope PWild = (scope,PP.char '_')
ppLit (LStr s) = PP.text (show s) ppLit (LStr s) = PP.text (show s)