Skip to content

Commit f471b98

Browse files
committed
[F] ^类型的星星解析报错
1 parent 8f2b978 commit f471b98

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

parser/simai/SimaiParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ public sealed override object VisitSlideBody(P.SlideBodyContext context)
456456
var key = int.Parse(context.KEY()[i].GetText());
457457
var segment = new SlideSegment((Slide)currNote!)
458458
{
459-
Type = SlideTypeTool.FromSimai(context.slideType()[i].GetText(), slide.EndKey), // 在新的segment被添加之前,此前的slide部分的EndKey就是新segment的StartKey
459+
Type = SlideTypeTool.FromSimai(context.slideType()[i].GetText(), slide.EndKey, key), // 在新的segment被添加之前,此前的slide部分的EndKey就是新segment的StartKey
460460
EndKey = key
461461
};
462462
slide.segments.Add(segment);

utils/Enum.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static string ToSimai(this SlideType type, int startKey)
5050
throw Utils.Fail();
5151
}
5252

53-
public static SlideType FromSimai(string s, int? startKey)
53+
public static SlideType FromSimai(string s, int? startKey, int? endKey)
5454
{
5555
if (s[0] is >= '1' and <= '8')
5656
{
@@ -69,8 +69,8 @@ public static SlideType FromSimai(string s, int? startKey)
6969
return startKey is >= 3 and <= 6 ? SlideType.SCL : SlideType.SCR;
7070
case '^':
7171
Utils.Assert(startKey != null, "startKey没传进来");
72-
if (!int.TryParse(s[1..2], out var endKey)) throw new ArgumentException(string.Format(Locale.InvalidSlide, $"{startKey}{s}"));
73-
var distance = (endKey - startKey!.Value + 8) % 8; // 先假设按顺时针的方向走,看看距离
72+
Utils.Assert(endKey != null, "endKey没传进来");
73+
var distance = (endKey - startKey + 8) % 8; // 先假设按顺时针的方向走,看看距离
7474
if (distance is 0 or 4) throw new ArgumentException(string.Format(Locale.InvalidSlide, $"{startKey}{s}(^的endKey不能是整半圈)"));
7575
return distance < 4 ? SlideType.SCR : SlideType.SCL; // <4说明顺时针走更近;反之如果顺时针走的距离>4,则说明逆时针更近。
7676
case 'p':

0 commit comments

Comments
 (0)