mirror of
https://github.com/macocianradu/RosettaHaskellCompiler.git
synced 2026-03-18 13:00:08 +00:00
added function body
This commit is contained in:
@@ -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 _) =
|
||||||
|
|||||||
Reference in New Issue
Block a user