-print :: LexerOutput -> String
-print (Left l) = "Error: " +++ l
-print (Right x) = 'Text'.concat (print` 0 x)
- where
- print` :: Int [Token] -> [String]
- print` _ [] = []
- print` i [(IdentToken l):rest] = [toString l:print` i rest]
- print` i [(NumberToken j):rest] = [toString j:print` i rest]
- print` i [(CharToken c):rest] = ["'":toString c:"'":print` i rest]
- print` i [VarToken:rest] = ["var ":print` i rest]
- print` i [VoidToken:rest] = ["Void":print` i rest]
- print` i [ReturnToken:rest] = ["return":print` i rest]
- print` i [IfToken:rest] = ["if":print` i rest]
- print` i [ElseToken:rest] = ["else":print` i rest]
- print` i [WhileToken:rest] = ["while":print` i rest]
- print` i [TrueToken:rest] = ["True":print` i rest]
- print` i [FalseToken:rest] = ["False":print` i rest]
- print` i [BraceOpenToken:rest] = ["(":print` i rest]
- print` i [BraceCloseToken:rest] = [")":print` i rest]
- print` i [CBraceOpenToken:rest] = ["{\n":tab (i+1):print` (i+1) rest]
- print` i [CBraceCloseToken:rest] = ["}\n":tab i:print` i rest]
- print` i [SquareOpenToken:rest] = ["[":print` i rest]
- print` i [SquareCloseToken:rest] = ["]":print` i rest]
- print` i [CommaToken:rest] = [", ":print` i rest]
- print` i [ColonToken:rest] = [":":print` i rest]
- print` i [SColonToken:CBraceCloseToken:rest] =
- [";\n":tab (i-1):"}\n":print` (i-1) rest]
- print` i [SColonToken:rest] = [";\n":tab i:print` i rest]
- print` i [DotToken:rest] = [".":print` i rest]
- print` i [PlusToken:rest] = [" + ":print` i rest]
- print` i [DashToken:rest] = [" - ":print` i rest]
- print` i [StarToken:rest] = [" * ":print` i rest]
- print` i [SlashToken:rest] = [" / ":print` i rest]
- print` i [PercentToken:rest] = [" % ":print` i rest]
- print` i [AssignmentToken:rest] = [" = ":print` i rest]
- print` i [LesserToken:rest] = [" < ":print` i rest]
- print` i [BiggerToken:rest] = [" > ":print` i rest]
- print` i [ExclamationToken:rest] = ["!":print` i rest]
- print` i [DoubleColonToken:rest] = [" :: ":print` i rest]
- print` i [LesserEqToken:rest] = [" <= ":print` i rest]
- print` i [GreaterEqToken:rest] = [" >= ":print` i rest]
- print` i [EqualsToken:rest] = [" == ":print` i rest]
- print` i [AmpersandsToken:rest] = [" && ":print` i rest]
- print` i [PipesToken:rest] = [" || ":print` i rest]
- print` i [ArrowToken:rest] = [" -> ":print` i rest]
- print` i [EndOfFileToken:rest] = ["\n":print` i rest]
-
-tab :: Int -> String
-tab 0 = ""
-tab i = "\t" +++ tab (i-1)
-
-