aboutsummaryrefslogtreecommitdiff
path: root/src/tokenizer/tokens.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tokenizer/tokens.rs')
-rw-r--r--src/tokenizer/tokens.rs74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/tokenizer/tokens.rs b/src/tokenizer/tokens.rs
new file mode 100644
index 0000000..fa1d7e7
--- /dev/null
+++ b/src/tokenizer/tokens.rs
@@ -0,0 +1,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)
+ }
+}