add support for @,_,* tokens

This commit is contained in:
Luke Boswell 2023-03-12 17:01:05 +11:00
parent 5a0a7289ba
commit 1e26769313
No known key found for this signature in database
GPG key ID: F6DB3C9DB47377B0
2 changed files with 22 additions and 1 deletions

View file

@ -55,11 +55,14 @@ pub enum Token {
Pizza, Pizza,
Brace, Brace,
Bracket, Bracket,
AtSign,
Paren, Paren,
Arrow, Arrow,
Pipe, Pipe,
Backpass, Backpass,
Decimal, Decimal,
Multiply,
Underscore,
} }
pub fn highlight(text: &str) -> Vec<Loc<Token>> { pub fn highlight(text: &str) -> Vec<Loc<Token>> {
@ -274,6 +277,10 @@ fn highlight_inner<'a>(
state.advance_mut(1); state.advance_mut(1);
tokens.push(Loc::at(Region::between(start, state.pos()), Token::Comma)); tokens.push(Loc::at(Region::between(start, state.pos()), Token::Comma));
} }
'_' => {
state.advance_mut(1);
tokens.push(Loc::at(Region::between(start, state.pos()), Token::Underscore));
}
'?' => { '?' => {
state.advance_mut(1); state.advance_mut(1);
tokens.push(Loc::at( tokens.push(Loc::at(
@ -285,6 +292,10 @@ fn highlight_inner<'a>(
state.advance_mut(1); state.advance_mut(1);
tokens.push(Loc::at(Region::between(start, state.pos()), Token::Percent)); tokens.push(Loc::at(Region::between(start, state.pos()), Token::Percent));
} }
'*' => {
state.advance_mut(1);
tokens.push(Loc::at(Region::between(start, state.pos()), Token::Multiply));
}
'^' => { '^' => {
state.advance_mut(1); state.advance_mut(1);
tokens.push(Loc::at(Region::between(start, state.pos()), Token::Caret)); tokens.push(Loc::at(Region::between(start, state.pos()), Token::Caret));
@ -306,6 +317,13 @@ fn highlight_inner<'a>(
}; };
tokens.push(Loc::at(Region::between(start, state.pos()), tok)); tokens.push(Loc::at(Region::between(start, state.pos()), tok));
} }
'@' => {
state.advance_mut(1);
tokens.push(Loc::at(
Region::between(start, state.pos()),
Token::AtSign,
));
}
'{' | '}' => { '{' | '}' => {
state.advance_mut(1); state.advance_mut(1);
tokens.push(Loc::at(Region::between(start, state.pos()), Token::Brace)); tokens.push(Loc::at(Region::between(start, state.pos()), Token::Brace));

View file

@ -45,6 +45,7 @@ pub fn highlight(code: &str) -> Vec<String> {
| Token::ColonEquals | Token::ColonEquals
| Token::Colon | Token::Colon
| Token::And | Token::And
| Token::AtSign
| Token::QuestionMark => { | Token::QuestionMark => {
buf = push_html_span(buf, current_text, "kw"); buf = push_html_span(buf, current_text, "kw");
} }
@ -63,6 +64,7 @@ pub fn highlight(code: &str) -> Vec<String> {
| Token::LessThanEquals | Token::LessThanEquals
| Token::DoubleEquals | Token::DoubleEquals
| Token::DoubleBar | Token::DoubleBar
| Token::Multiply
| Token::Plus | Token::Plus
| Token::DoubleAnd => { | Token::DoubleAnd => {
buf = push_html_span(buf, current_text, "op"); buf = push_html_span(buf, current_text, "op");
@ -81,7 +83,8 @@ pub fn highlight(code: &str) -> Vec<String> {
buf = push_html_span(buf, current_text, "upperident"); buf = push_html_span(buf, current_text, "upperident");
} }
// Variables modules and field names // Variables modules and field names
Token::LowerIdent => { Token::LowerIdent
| Token::Underscore => {
buf = push_html_span(buf, current_text, "lowerident"); buf = push_html_span(buf, current_text, "lowerident");
} }
// Anyting else that wasn't tokenised // Anyting else that wasn't tokenised