2019-06-12 19:44:45 +02:00
|
|
|
use crate::parser::parse2::flag::*;
|
2019-06-11 07:53:04 +02:00
|
|
|
use crate::parser::parse2::operator::*;
|
|
|
|
use crate::parser::parse2::span::*;
|
2019-06-12 19:44:45 +02:00
|
|
|
use crate::parser::parse2::unit::*;
|
2019-06-11 07:53:04 +02:00
|
|
|
|
|
|
|
#[derive(Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash)]
|
|
|
|
pub enum RawToken {
|
|
|
|
Integer(i64),
|
2019-06-12 19:44:45 +02:00
|
|
|
Size(i64, Unit),
|
2019-06-11 07:53:04 +02:00
|
|
|
String(Span),
|
2019-06-12 19:44:45 +02:00
|
|
|
Variable(Span),
|
|
|
|
Bare,
|
2019-06-11 07:53:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
pub type Token = Spanned<RawToken>;
|
2019-06-22 03:36:57 +02:00
|
|
|
|
|
|
|
impl Token {
|
|
|
|
pub fn to_semantic_token(&self) -> Option<SemanticToken> {
|
|
|
|
let semantic_token = match self.item {
|
|
|
|
RawToken::Integer(int) => RawSemanticToken::Integer(int),
|
|
|
|
RawToken::Size(int, unit) => RawSemanticToken::Size(int, unit),
|
|
|
|
RawToken::String(span) => RawSemanticToken::String(span),
|
|
|
|
RawToken::Variable(span) => RawSemanticToken::Variable(span),
|
|
|
|
RawToken::Bare => RawSemanticToken::Bare,
|
|
|
|
};
|
|
|
|
|
|
|
|
Some(Spanned::from_item(semantic_token, self.span))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash)]
|
|
|
|
pub enum RawSemanticToken {
|
|
|
|
Integer(i64),
|
|
|
|
Size(i64, Unit),
|
|
|
|
String(Span),
|
|
|
|
Variable(Span),
|
|
|
|
Bare,
|
|
|
|
}
|
|
|
|
|
|
|
|
pub type SemanticToken = Spanned<RawSemanticToken>;
|