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,
@ -246,14 +247,14 @@ impl TokenKind {
BitOr => 120, // || BitOr => 120, // ||
Closed | LeftOpen | RightOpen | Open => 100, // range operators Closed | LeftOpen | RightOpen | Open => 100, // range operators
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, // = :=
Newline | Semi => 10, // \n ; Newline | Semi => 10, // \n ;
LParen | LBrace | LSqBr | Indent => 0, // ( { [ Indent LParen | LBrace | LSqBr | Indent => 0, // ( { [ Indent
_ => return None, _ => return None,
}; };
Some(prec) Some(prec)