1use std::collections::VecDeque;
2use std::fmt::{Display, Formatter};
3
4use crate::Span;
5
6#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
7pub struct Token {
8 pub name: String,
9 pub span: Span,
10 pub inner: VecDeque<Token>,
11 pub left: Option<Box<Token>>,
12 pub right: Option<Box<Token>>,
13}
14impl Token {
15 pub fn new(name: &str, span: Span) -> Token {
16 Token {
17 name: name.to_string(),
18 span,
19 inner: VecDeque::new(),
20 left: None,
21 right: None,
22 }
23 }
24}
25impl Display for Token {
26 fn fmt(&self, f: &mut Formatter) -> std::fmt::Result {
27 write!(f, "{}", self.name.as_str())
28 }
29}