This commit is contained in:
DismissedLight
2025-01-21 22:10:50 +08:00
parent d4aae4508a
commit 45f55f94cd
15 changed files with 217 additions and 58 deletions

View File

@@ -12,34 +12,41 @@ public sealed class ScriptEmitTest
new LineBreakTriviaSymbol(),
new AvatarInstructionListSymbol(new("钟离"), [new SpaceTriviaSymbol()], new(
[
new WalkSymbol(WalkDirection.Backward, [new DoubleSymbol(0.1)], [new CommaTriviaSymbol()]),
new SkillSymbol(true, [new HoldSymbol()], [new CommaTriviaSymbol()]),
new WaitSymbol([new DoubleSymbol(0.3)], [new CommaTriviaSymbol()]),
new WalkSymbol(WalkDirection.Forward, [new DoubleSymbol(0.1)], []),
new WalkSymbol(WalkDirection.Backward, [new DoubleSymbol(0.1)], [], new CommaTriviaSymbol()),
new SkillSymbol(true, [new HoldSymbol()], [new SpaceTriviaSymbol()], new CommaTriviaSymbol()),
new WaitSymbol([new DoubleSymbol(0.3)], [new SpaceTriviaSymbol()], new CommaTriviaSymbol()),
new WalkSymbol(WalkDirection.Forward, [new DoubleSymbol(0.1)], [new SpaceTriviaSymbol()], default),
])),
new LineBreakTriviaSymbol(),
new AvatarInstructionListSymbol(new("芙宁娜"), [new SpaceTriviaSymbol()], new(
[
new SkillSymbol(true, [new CommaTriviaSymbol()]),
new BurstSymbol(true, [])
new SkillSymbol(true, [], new CommaTriviaSymbol()),
new BurstSymbol(true, [new SpaceTriviaSymbol()], default)
])),
new LineBreakTriviaSymbol(),
new AvatarInstructionListSymbol(new("行秋"), [new SpaceTriviaSymbol()], new(
[
new SkillSymbol(true, [new CommaTriviaSymbol()]),
new BurstSymbol(true, [new CommaTriviaSymbol()]),
new SkillSymbol(true, []),
new SkillSymbol(true, [], new CommaTriviaSymbol()),
new BurstSymbol(true, [new SpaceTriviaSymbol()], new CommaTriviaSymbol()),
new SkillSymbol(true, [new SpaceTriviaSymbol()], default),
])),
]);
Console.WriteLine(scriptUnit.Emit(new DefaultSymbolEmitter()));
Console.WriteLine(scriptUnit.Emit(new SymbolEmitter()));
}
[TestMethod]
public void Test()
public void TestParse()
{
ReadOnlySpan<char> raw = "ABCDEF;GHIJKL\r\nMNOPQR\nSTUVWX\rYZ\r\n";
SymbolParser parser = new();
ScriptUnit scriptUnit = parser.Parse(raw);
ReadOnlySpan<char> raw = """
// 测试注释
s(0.1),e(hold),wait(0.3),w(0.1)
e,q
e,q,e
""";
ScriptUnit scriptUnit = SymbolParser.Parse(raw);
Console.WriteLine(scriptUnit.Emit(new SymbolEmitter()));
}
}