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