//! Different token definitions. //! Loosely based on token.h from CPython source: use num_bigint::BigInt; /// Python source code can be tokenized in a sequence of these tokens. #[derive(Debug, PartialEq)] pub enum Tok { Name { name: String }, Int { value: BigInt }, Float { value: f64 }, Complex { real: f64, imag: f64 }, String { value: String, is_fstring: bool }, Bytes { value: Vec }, Newline, Indent, Dedent, StartProgram, StartStatement, StartExpression, Lpar, Rpar, Lsqb, Rsqb, Colon, Comma, Semi, Plus, Minus, Star, Slash, Vbar, // '|' Amper, // '&' Less, Greater, Equal, Dot, Percent, Lbrace, Rbrace, EqEqual, NotEqual, LessEqual, GreaterEqual, Tilde, CircumFlex, LeftShift, RightShift, DoubleStar, DoubleStarEqual, // '**=' PlusEqual, MinusEqual, StarEqual, SlashEqual, PercentEqual, AmperEqual, // '&=' VbarEqual, CircumflexEqual, // '^=' LeftShiftEqual, RightShiftEqual, DoubleSlash, // '//' DoubleSlashEqual, At, AtEqual, Rarrow, Ellipsis, // Keywords (alphabetically): False, None, True, And, As, Assert, Break, Class, Continue, Def, Del, Elif, Else, Except, Finally, For, From, Global, If, Import, In, Is, Lambda, Nonlocal, Not, Or, Pass, Raise, Return, Try, While, With, Yield, }