module UU.Scanner.TokenShow() where import UU.Scanner.Token(Token,EnumValToken(..)) import UU.Scanner.Position(Pos(..)) import UU.Scanner.GenToken(GenToken(..)) instance Show Token where showsPrec :: Line -> Token -> ShowS showsPrec Line _ Token token = Filename -> ShowS showString (case Token token of Reserved Filename key Pos pos -> Filename "symbol " Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Filename key Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Pos -> Filename maybeshow Pos pos ValToken EnumValToken tp Filename val Pos pos -> EnumValToken -> Filename forall a. Show a => a -> Filename show EnumValToken tp Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Filename " " Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Filename val Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Pos -> Filename maybeshow Pos pos ) instance Show EnumValToken where show :: EnumValToken -> Filename show EnumValToken tp = case EnumValToken tp of EnumValToken TkOp -> Filename "operator" EnumValToken TkConOp -> Filename "con operator" EnumValToken TkString -> Filename "string" EnumValToken TkChar -> Filename "character" EnumValToken TkInteger8 -> Filename "octal integer" EnumValToken TkInteger10 -> Filename "decimal Integer" EnumValToken TkInteger16 -> Filename "hexadecimal integer" EnumValToken TkFraction -> Filename "fraction (float,...)" EnumValToken TkVarid -> Filename "lower case identifier" EnumValToken TkConid -> Filename "upper case identifier" EnumValToken TkTextnm -> Filename "text name" EnumValToken TkTextln -> Filename "text lines" EnumValToken TkError -> Filename "error in scanner:" maybeshow :: Pos -> String maybeshow :: Pos -> Filename maybeshow (Pos Line l Line c Filename fn) | Line l Line -> Line -> Bool forall a. Ord a => a -> a -> Bool <= Line 0 Bool -> Bool -> Bool || Line c Line -> Line -> Bool forall a. Ord a => a -> a -> Bool <= Line 0 = Filename "" | Bool otherwise = Filename " at line " Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Line -> Filename forall a. Show a => a -> Filename show Line l Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Filename ", column " Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Line -> Filename forall a. Show a => a -> Filename show Line c Filename -> ShowS forall a. [a] -> [a] -> [a] ++ Filename " of file " Filename -> ShowS forall a. [a] -> [a] -> [a] ++ ShowS forall a. Show a => a -> Filename show Filename fn