aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer/tokens.rs
blob: fa1d7e723d5d752f07fc19607921fbb17f4147a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#[derive(Debug, PartialEq, Eq)]
pub enum ControlCode {
    Melody,     // 0x80
    Space,      // 0x81
    Question,   // 0x82
    Bang,       // 0x83
    Newline,    // 0x84
    Punct,      // 0x85
    Bebe,       // 0x86,
    Control,    // -1
}

#[derive(Debug, PartialEq, Eq)]
pub enum Letter {
    A,          // 0x5D
    B,          // 0x5E
    C,          // 0x5F
    D,          // 0x60
    E,          // 0x61
    F,          // 0x62
    G,          // 0x63
    H,          // 0x64
    I,          // 0x65
    J,          // 0x66
    K,          // 0x67
    L,          // 0x68
    M,          // 0x69
    N,          // 0x6A
    O,          // 0x6B
    P,          // 0x6C
    Q,          // 0x6D
    R,          // 0x6E
    S,          // 0x6F
    T,          // 0x70
    U,          // 0x71
    V,          // 0x72
    W,          // 0x73
    X,          // 0x74
    Y,          // 0x75
    Z,          // 0x76
}

#[derive(Debug, PartialEq, Eq)]
pub enum Digit {
    D0,         // 0x53
    D1,         // 0x54
    D2,         // 0x55
    D3,         // 0x56
    D4,         // 0x57
    D5,         // 0x58
    D6,         // 0x59
    D7,         // 0x5A
    D8,         // 0x5B
    D9,         // 0x5C
}

#[derive(Debug)]
pub enum VoiceCode {
    Letter(Letter),
    ControlCode(ControlCode),
    Digit(Digit)
}


impl Letter {
    fn is_shiin(&self) -> bool {
        !self.is_boin()
    }

    fn is_boin(&self) -> bool {
        use Letter::*;
        [A, E, I, O, U, N].contains(&self)
    }
}