mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-02 19:39:49 +09:00
103 lines
1.5 KiB
Rust
103 lines
1.5 KiB
Rust
//! 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<u8> },
|
|
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,
|
|
}
|