Merge pull request #198 from GreasySlug/feature/update-lex

Tokenize the `<-`
This commit is contained in:
Shunsuke Shibayama 2022-10-09 18:14:07 +09:00 committed by GitHub
commit f942a63066
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 11 deletions

View file

@ -851,6 +851,10 @@ impl Iterator for Lexer /*<'a>*/ {
))) )))
} }
} }
Some('-') => {
self.consume();
self.accept(Inclusion, "<-")
}
Some('=') => { Some('=') => {
self.consume(); self.consume();
self.accept(LessEq, "<=") self.accept(LessEq, "<=")

View file

@ -109,6 +109,8 @@ pub enum TokenKind {
RefMutOp, RefMutOp,
/// = /// =
Equal, Equal,
/// <-
Inclusion,
/// := /// :=
Walrus, Walrus,
/// -> /// ->
@ -214,9 +216,8 @@ impl TokenKind {
| InfLit => TokenCategory::Literal, | InfLit => TokenCategory::Literal,
PrePlus | PreMinus | PreBitNot | Mutate | RefOp | RefMutOp => TokenCategory::UnaryOp, PrePlus | PreMinus | PreBitNot | Mutate | RefOp | RefMutOp => TokenCategory::UnaryOp,
Try => TokenCategory::PostfixOp, Try => TokenCategory::PostfixOp,
Comma | Colon | DblColon | SupertypeOf | SubtypeOf | Dot | Pipe | Walrus => { Comma | Colon | DblColon | SupertypeOf | SubtypeOf | Dot | Pipe | Walrus
TokenCategory::SpecialBinOp | Inclusion => TokenCategory::SpecialBinOp,
}
Equal => TokenCategory::DefOp, Equal => TokenCategory::DefOp,
FuncArrow | ProcArrow => TokenCategory::LambdaOp, FuncArrow | ProcArrow => TokenCategory::LambdaOp,
Semi | Newline => TokenCategory::Separator, Semi | Newline => TokenCategory::Separator,
@ -248,7 +249,7 @@ impl TokenKind {
Less | Gre | LessEq | GreEq | DblEq | NotEq | InOp | NotInOp | IsOp | IsNotOp => 90, // < > <= >= == != in notin is isnot Less | Gre | LessEq | GreEq | DblEq | NotEq | InOp | NotInOp | IsOp | IsNotOp => 90, // < > <= >= == != in notin is isnot
AndOp => 80, // and AndOp => 80, // and
OrOp => 70, // or OrOp => 70, // or
FuncArrow | ProcArrow => 60, // -> => FuncArrow | ProcArrow | Inclusion => 60, // -> => <-
Colon | SupertypeOf | SubtypeOf => 50, // : :> <: Colon | SupertypeOf | SubtypeOf => 50, // : :> <:
Comma => 40, // , Comma => 40, // ,
Equal | Walrus => 20, // = := Equal | Walrus => 20, // = :=