From 8603cfe3d833200bf18a3618957a08f31c158f27 Mon Sep 17 00:00:00 2001 From: Qrakhen Date: Tue, 18 Nov 2025 23:42:34 +0100 Subject: [PATCH] fix a few error --- Qrakhen.Qamp.Core/Compilation/ExpressionParser.cs | 4 ++-- Qrakhen.Qamp.Core/Tokenization/Reader.cs | 8 +++++--- Qrakhen.Qamp.Core/Tokenization/TokenType.cs | 3 ++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Qrakhen.Qamp.Core/Compilation/ExpressionParser.cs b/Qrakhen.Qamp.Core/Compilation/ExpressionParser.cs index eafb70b..0206623 100644 --- a/Qrakhen.Qamp.Core/Compilation/ExpressionParser.cs +++ b/Qrakhen.Qamp.Core/Compilation/ExpressionParser.cs @@ -111,7 +111,7 @@ public static class ExpressionParser digester.EmitDynamic(OpCode.Array, length); // digester.MakeConstant(new Value((long)length))); } - static void ArrayAdd(Digester digester, bool canAssign) + static void AddItem(Digester digester, bool canAssign) { digester.ParseExpression(); digester.Emit(OpCode.AddItem); @@ -254,7 +254,7 @@ public static class ExpressionParser _rules[TokenType.ContextClose] = new Rule(null, null, Weight.None); _rules[TokenType.ArrayOpen] = new Rule(Array, Accessor, Weight.Call); _rules[TokenType.ArrayClose] = new Rule(null, null, Weight.None); - _rules[TokenType.AddItem] = new Rule(null, ArrayAdd, Weight.None); + _rules[TokenType.AddItem] = new Rule(null, AddItem, Weight.None); _rules[TokenType.RemoveItem] = new Rule(null, null, Weight.None); _rules[TokenType.Colon] = new Rule(null, Dot, Weight.Call); _rules[TokenType.Comma] = new Rule(null, null, Weight.None); diff --git a/Qrakhen.Qamp.Core/Tokenization/Reader.cs b/Qrakhen.Qamp.Core/Tokenization/Reader.cs index aa2a6fe..30a94a2 100644 --- a/Qrakhen.Qamp.Core/Tokenization/Reader.cs +++ b/Qrakhen.Qamp.Core/Tokenization/Reader.cs @@ -279,7 +279,7 @@ public class Reader : IReader, IDisposable ';' => MakeToken(Semicolon, buffer), ':' => Check(':') ? MakeToken(Print, buffer + Next()) : - Check('(') ? + Check('[') ? MakeToken(ListOpen, buffer + Next()) : MakeToken(Colon, buffer), '&' => Check('&') ? @@ -320,7 +320,7 @@ public class Reader : IReader, IDisposable MakeToken(Equal, buffer), '<' => Check('~') ? MakeToken(Equal, buffer + Next()) : - Check(':') ? + Check(':') ? MakeToken(Return, buffer + Next()) : Check('+') ? MakeToken(AddItem, buffer + Next()) : @@ -328,7 +328,9 @@ public class Reader : IReader, IDisposable MakeToken(BitwiseLeft, buffer + Next()) : Check('=') ? MakeToken(LessEqual, buffer + Next()) : - MakeToken(Less, buffer), + Check('>') ? + MakeToken(TernaryElse, buffer + Next()) : + MakeToken(Less, buffer), '>' => Check('>') ? MakeToken(BitwiseRight, buffer + Next()) : Check('=') ? diff --git a/Qrakhen.Qamp.Core/Tokenization/TokenType.cs b/Qrakhen.Qamp.Core/Tokenization/TokenType.cs index ce270e6..8dd9445 100644 --- a/Qrakhen.Qamp.Core/Tokenization/TokenType.cs +++ b/Qrakhen.Qamp.Core/Tokenization/TokenType.cs @@ -84,6 +84,7 @@ public enum TokenType While, Do, Return, + TernaryElse, Ref, Function, @@ -103,7 +104,7 @@ public enum TokenType public static class TokenTypeExtensions { public static bool IsBracket(this TokenType type) - => type is GroupClose or GroupOpen or ContextClose or ContextOpen or ArrayClose or ArrayOpen; + => type is GroupClose or GroupOpen or ContextClose or ContextOpen or ArrayClose or ArrayOpen or ListOpen; public static bool IsString(this TokenType type) => type is TokenType.String;