Diffstat (limited to 'src/lexer.rs')
-rw-r--r--src/lexer.rs22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/lexer.rs b/src/lexer.rs
index 7ed17ff..ca025fb 100644
--- a/src/lexer.rs
+++ b/src/lexer.rs
@@ -1,9 +1,11 @@
+use std::sync::LazyLock;
+
use beef::lean::Cow;
use chumsky::span::{SimpleSpan, Span};
use logos::{Lexer as RealLexer, Logos, SpannedIter};
use regex::Regex;
-use std::sync::LazyLock;
-static EMOJI: LazyLock<Regex> = LazyLock::new(|| Regex::new(r"[\p{Emoji}&&[^0-9]]").unwrap());
+static EMOJI: LazyLock<Regex> =
+ LazyLock::new(|| Regex::new(r"[\p{Emoji}&&[^0-9]]").unwrap());
macro_rules! tokens {
($($z:literal $( | $y:literal)? => $v:ident,)+) => {
#[derive(Logos, Debug, PartialEq, Clone)]
@@ -94,7 +96,7 @@ tokens! {
"๐Ÿ”€" => Flip,
"โคต๏ธ" => Zap,
- "โฌ‡" => With,
+ "โฌ‡๏ธ" => With,
"โฌ†" => Merge,
"โซ" => Range,
"๐Ÿชช" => Type,
@@ -103,19 +105,25 @@ tokens! {
"๐Ÿ“‚" => Open,
"โช" => Shl,
"โฉ" => Shr,
+ "โŽ" => Del,
"๐Ÿ“ถ" => Sort,
"๐Ÿ”“" => Mask,
"๐Ÿ”’" => Index,
+ "#๏ธโƒฃ๐Ÿ—บ" => HashMap,
+ "โ‰ฃ#๏ธโƒฃ" => Get,
+ "โˆ…" => Set,
+ "๐Ÿ’ฝ" => Append,
"๐Ÿšง" => Split,
- "โฌ…" => First,
+ "โฌ…๏ธ" => First,
"โžก" => Last,
"โ†˜๏ธ" => Reduce,
+ "โญ๏ธ" => Fold,
"๐Ÿ—บ" => Map,
"๐Ÿ‹" => If,
"๐Ÿฌ" => EagerIf,
"๐Ÿ‡ณ๐Ÿ‡ฟ" => Zip,
"๐Ÿง" => Debug,
- "." => Call,
+ "." => Identity,
}
@@ -125,7 +133,9 @@ pub fn lex(s: &str) -> Lexer {
}
}
-fn chr<'src, const CHR: char>(_: &mut RealLexer<'src, Token<'src>>) -> Result<char, ()> {
+fn chr<'src, const CHR: char>(
+ _: &mut RealLexer<'src, Token<'src>>,
+) -> Result<char, ()> {
Ok(CHR)
}
pub struct Lexer<'s> {