Skip to main content

java_lang/ast/
op.rs

1//! Operator types.
2
3use crate::span::Span;
4
5/// A binary operator.
6#[derive(Debug, Clone, PartialEq, Eq, Hash)]
7pub enum BinOp {
8    Add,
9    Sub,
10    Mul,
11    Div,
12    Rem,
13    And,
14    Or,
15    Xor,
16    LShift,
17    RShift,
18    URShift,
19    Eq,
20    Ne,
21    Lt,
22    Gt,
23    Le,
24    Ge,
25    LAnd,
26    LOr,
27}
28
29/// A binary operator with its span.
30#[derive(Debug, Clone, PartialEq, Eq, Hash)]
31pub struct BinOpToken {
32    pub op: BinOp,
33    pub span: Span,
34}
35
36/// An assignment operator.
37#[derive(Debug, Clone, PartialEq, Eq, Hash)]
38pub enum AssignOp {
39    Assign,
40    AddAssign,
41    SubAssign,
42    MulAssign,
43    DivAssign,
44    AndAssign,
45    OrAssign,
46    XorAssign,
47    RemAssign,
48    LShiftAssign,
49    RShiftAssign,
50    URShiftAssign,
51}
52
53/// An assignment operator with its span.
54#[derive(Debug, Clone, PartialEq, Eq, Hash)]
55pub struct AssignOpToken {
56    pub op: AssignOp,
57    pub span: Span,
58}
59
60/// A unary operator.
61#[derive(Debug, Clone, PartialEq, Eq, Hash)]
62pub enum UnaryOp {
63    Neg,
64    Not,
65    BitNot,
66    PreInc,
67    PreDec,
68    PostInc,
69    PostDec,
70}