module Language.Python.Common.PrettyToken where
import Language.Python.Common.Token
import Language.Python.Common.Pretty
instance Pretty Token where
pretty :: Token -> Doc
pretty tok :: Token
tok =
case Token
tok of
IndentToken {} -> String -> Doc
text "indentation"
DedentToken {} -> String -> Doc
text "dedentation"
NewlineToken {} -> String -> Doc
text "end of line"
LineJoinToken {} -> String -> Doc
text "line join"
CommentToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "comment:" Doc -> Doc -> Doc
<+> Int -> String -> Doc
forall a. Pretty a => Int -> a -> Doc
prettyPrefix 10 String
str
IdentifierToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "identifier:" Doc -> Doc -> Doc
<+> String -> Doc
text String
str
StringToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "string:" Doc -> Doc -> Doc
<+> Int -> String -> Doc
forall a. Pretty a => Int -> a -> Doc
prettyPrefix 10 String
str
ByteStringToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "byte string:" Doc -> Doc -> Doc
<+> Int -> String -> Doc
forall a. Pretty a => Int -> a -> Doc
prettyPrefix 10 String
str
UnicodeStringToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "unicode string:" Doc -> Doc -> Doc
<+> Int -> String -> Doc
forall a. Pretty a => Int -> a -> Doc
prettyPrefix 10 String
str
IntegerToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "integer:" Doc -> Doc -> Doc
<+> String -> Doc
text String
str
LongIntegerToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "long integer:" Doc -> Doc -> Doc
<+> String -> Doc
text String
str
FloatToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "floating point number:" Doc -> Doc -> Doc
<+> String -> Doc
text String
str
ImaginaryToken { token_literal :: Token -> String
token_literal = String
str } ->
String -> Doc
text "imaginary number:" Doc -> Doc -> Doc
<+> String -> Doc
text String
str
DefToken {} -> String -> Doc
text "def"
WhileToken {} -> String -> Doc
text "while"
IfToken {} -> String -> Doc
text "if"
TrueToken {} -> String -> Doc
text "True"
FalseToken {} -> String -> Doc
text "False"
ReturnToken {} -> String -> Doc
text "return"
TryToken {} -> String -> Doc
text "try"
ExceptToken {} -> String -> Doc
text "except"
RaiseToken {} -> String -> Doc
text "raise"
InToken {} -> String -> Doc
text "in"
IsToken {} -> String -> Doc
text "is"
LambdaToken {} -> String -> Doc
text "lambda"
ClassToken {} -> String -> Doc
text "class"
FinallyToken {} -> String -> Doc
text "finally"
NoneToken {} -> String -> Doc
text "None"
ForToken {} -> String -> Doc
text "for"
FromToken {} -> String -> Doc
text "from"
GlobalToken {} -> String -> Doc
text "global"
WithToken {} -> String -> Doc
text "with"
AsToken {} -> String -> Doc
text "as"
ElifToken {} -> String -> Doc
text "elif"
YieldToken {} -> String -> Doc
text "yield"
AsyncToken {} -> String -> Doc
text "async"
AwaitToken {} -> String -> Doc
text "await"
AssertToken {} -> String -> Doc
text "assert"
ImportToken {} -> String -> Doc
text "import"
PassToken {} -> String -> Doc
text "pass"
BreakToken {} -> String -> Doc
text "break"
ContinueToken {} -> String -> Doc
text "continue"
DeleteToken {} -> String -> Doc
text "delete"
ElseToken {} -> String -> Doc
text "else"
NotToken {} -> String -> Doc
text "not"
AndToken {} -> String -> Doc
text "and"
OrToken {} -> String -> Doc
text "or"
NonLocalToken {} -> String -> Doc
text "nonlocal"
PrintToken {} -> String -> Doc
text "print"
ExecToken {} -> String -> Doc
text "exec"
AtToken {} -> String -> Doc
text "at"
LeftRoundBracketToken {} -> String -> Doc
text "("
RightRoundBracketToken {} -> String -> Doc
text ")"
LeftSquareBracketToken {} -> String -> Doc
text "["
RightSquareBracketToken {} -> String -> Doc
text "]"
LeftBraceToken {} -> String -> Doc
text "{"
RightBraceToken {} -> String -> Doc
text "}"
DotToken {} -> String -> Doc
text "."
CommaToken {} -> String -> Doc
text ","
SemiColonToken {} -> String -> Doc
text ";"
ColonToken {} -> String -> Doc
text ":"
EllipsisToken {} -> String -> Doc
text "..."
RightArrowToken {} -> String -> Doc
text "->"
AssignToken {} -> String -> Doc
text "="
PlusAssignToken {} -> String -> Doc
text "+="
MinusAssignToken {} -> String -> Doc
text "-="
MultAssignToken {} -> String -> Doc
text "*="
DivAssignToken {} -> String -> Doc
text "/="
ModAssignToken {} -> String -> Doc
text "%="
PowAssignToken {} -> String -> Doc
text "**="
BinAndAssignToken {} -> String -> Doc
text "&="
BinOrAssignToken {} -> String -> Doc
text "|="
BinXorAssignToken {} -> String -> Doc
text "^="
LeftShiftAssignToken {} -> String -> Doc
text "<<="
RightShiftAssignToken {} -> String -> Doc
text ">>="
FloorDivAssignToken {} -> String -> Doc
text "//="
MatrixMultAssignToken {} -> String -> Doc
text "@="
BackQuoteToken {} -> String -> Doc
text "` (back quote)"
PlusToken {} -> String -> Doc
text "+"
MinusToken {} -> String -> Doc
text "-"
MultToken {} -> String -> Doc
text "*"
DivToken {} -> String -> Doc
text "/"
GreaterThanToken {} -> String -> Doc
text ">"
LessThanToken {} -> String -> Doc
text "<"
EqualityToken {} -> String -> Doc
text "=="
GreaterThanEqualsToken {} -> String -> Doc
text ">="
LessThanEqualsToken {} -> String -> Doc
text "<="
ExponentToken {} -> String -> Doc
text "**"
BinaryOrToken {} -> String -> Doc
text "|"
XorToken {} -> String -> Doc
text "^"
BinaryAndToken {} -> String -> Doc
text "&"
ShiftLeftToken {} -> String -> Doc
text "<<"
ShiftRightToken {} -> String -> Doc
text ">>"
ModuloToken {} -> String -> Doc
text "%"
FloorDivToken {} -> String -> Doc
text "//"
TildeToken {} -> String -> Doc
text "~"
NotEqualsToken {} -> String -> Doc
text "!="
NotEqualsV2Token {} -> String -> Doc
text "<>"
EOFToken {} -> String -> Doc
text "end of input"