28 lines
683 B
Rust
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
|
|
}
|
|
}
|