diff options
| author | Alexander Kassouni <alex@kassouni.net> | 2026-09-05 17:51:13 -0700 |
|---|---|---|
| committer | Alexander Kassouni <alex@kassouni.net> | 2026-09-05 17:51:13 -0700 |
| commit | 46227e2003de28202cc4e82bca4f7f4745476c4e (patch) | |
| tree | fe450ac33ffa13747613c3cfdf36ea24b3036c46 /src/tokenizer | |
init
Diffstat (limited to 'src/tokenizer')
| -rw-r--r-- | src/tokenizer/mod.rs | 2 | ||||
| -rw-r--r-- | src/tokenizer/tokens.rs | 74 |
2 files changed, 76 insertions, 0 deletions
diff --git a/src/tokenizer/mod.rs b/src/tokenizer/mod.rs new file mode 100644 index 0000000..54ea9a3 --- /dev/null +++ b/src/tokenizer/mod.rs @@ -0,0 +1,2 @@ +mod tokens; +pub use tokens::VoiceCode; 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) + } +} |