Files
matcha/src/lex/symbol.rs
T

28 lines
683 B
Rust

use super::Token;
#[derive(Debug)]
pub enum Symbol {
EqualSign,
Semicolon,
OpenBrace,
CloseBrace,
OpenParen,
CloseParen,
Comma,
}
pub fn parse_symbol(input: &str) -> Option<(Token, &str)> {
let c: char = input.chars().next()?;
let input = &input[1..];
match c {
'=' => Some((Token::Sym(Symbol::EqualSign), input)),
';' => Some((Token::Sym(Symbol::Semicolon), input)),
',' => Some((Token::Sym(Symbol::Comma), input)),
'{' => Some((Token::Sym(Symbol::OpenBrace), input)),
'}' => Some((Token::Sym(Symbol::CloseBrace), input)),
'(' => Some((Token::Sym(Symbol::OpenParen), input)),
')' => Some((Token::Sym(Symbol::CloseParen), input)),
_ => None
}
}