From 1bba34b9b7d1b1db2e2d0687237aafff84a0bf5b Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Thu, 18 Aug 2022 16:59:54 +0800 Subject: [PATCH] Reserve |> and <| symbols. --- CHANGELOG.md | 1 + src/tokenizer.rs | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e646ab5..93232d95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ Enhancements * The code base is cleaner by running it through Clippy. * `ParseError::err_type` and `ParseError::position` are added for convenience. * The source of an `AST` compiled from a script file is set to the file's path. +* `|>` and `<|` are now reserved symbols. Version 1.8.0 diff --git a/src/tokenizer.rs b/src/tokenizer.rs index a13de181..62d120e5 100644 --- a/src/tokenizer.rs +++ b/src/tokenizer.rs @@ -2036,6 +2036,10 @@ fn get_next_token_inner( start_pos, )); } + ('<', '|') => { + eat_next(stream, pos); + return Some((Token::Reserved("<|".into()), start_pos)); + } ('<', ..) => return Some((Token::LessThan, start_pos)), ('>', '=') => { @@ -2067,7 +2071,10 @@ fn get_next_token_inner( return Some((Token::NotEqualsTo, start_pos)); } - ('!', '.') => return Some((Token::Reserved("!.".into()), start_pos)), + ('!', '.') => { + eat_next(stream, pos); + return Some((Token::Reserved("!.".into()), start_pos)); + } ('!', ..) => return Some((Token::Bang, start_pos)), ('|', '|') => { @@ -2078,6 +2085,10 @@ fn get_next_token_inner( eat_next(stream, pos); return Some((Token::OrAssign, start_pos)); } + ('|', '>') => { + eat_next(stream, pos); + return Some((Token::Reserved("|>".into()), start_pos)); + } ('|', ..) => return Some((Token::Pipe, start_pos)), ('&', '&') => {