added function body

This commit is contained in:
macocianradu
2021-11-12 03:20:22 +01:00
parent 40f6fb24b7
commit d14c1de4cf

View File

@@ -10,7 +10,24 @@ import PrettyPrinter.Type
-- show printStatementTree -- show printStatementTree
printFunction :: Function -> String printFunction :: Function -> String
printFunction = show . printFunctionSignature printFunction f = show $ vcat [printFunctionSignature f, printFunctionBody f]
printFunctionBody :: Function -> Doc a
printFunctionBody (MakeFunction name _ _ _ ex) = pretty name <+> "=" <+> printExpression ex
printExpression :: Expression -> Doc a
printExpression (Variable s) = pretty s
printExpression (Int s) = pretty s
printExpression (Real s) = pretty s
printExpression (Boolean s) = pretty s
printExpression Empty = "empty"
printExpression (Parens ex) = "(" <> printExpression ex <> ")"
printExpression (List ex) = list (map printExpression ex)
printExpression (Function name ex) = pretty name <> tupled (map printExpression ex)
printExpression (PrefixExp name ex) = pretty name <+> printExpression ex
printExpression (PostfixExp name ex) = printExpression ex <+> pretty name
printExpression (InfixExp name ex1 ex2) = printExpression ex1 <+> pretty name <+> printExpression ex2
printExpression (IfSimple cond ex) = "if" <+> printExpression cond <+> "then" <+> printExpression ex
printExpression (IfElse cond ex1 ex2) = "if" <+> printExpression cond <+> "then" <+> printExpression ex1 <+> "else" <+> printExpression ex2
printFunctionSignature :: Function -> Doc a printFunctionSignature :: Function -> Doc a
printFunctionSignature (MakeFunction name description inputs output _) = printFunctionSignature (MakeFunction name description inputs output _) =