refact: 将编译中各个阶段接口化 (#35)

Reviewed-on: PostGuard/Canon#35
This commit is contained in:
2024-04-12 19:01:37 +08:00
parent f1c569ee0e
commit 67deb0aa2c
15 changed files with 748 additions and 615 deletions

View File

@@ -22,7 +22,7 @@ public class Grammar
/// </summary>
public required LrState BeginState { get; init; }
public GrammarParserBase ToGrammarParser()
public IGrammarParser ToGrammarParser()
{
Dictionary<LrState, Transformer> transformers = [];
@@ -71,10 +71,10 @@ public class Grammar
return new GrammarParser(transformers[BeginState], Begin);
}
private class GrammarParser(ITransformer beginTransformer, NonTerminator begin) : GrammarParserBase
private class GrammarParser(ITransformer beginTransformer, NonTerminator begin) : IGrammarParser
{
public override ITransformer BeginTransformer { get; } = beginTransformer;
public override NonTerminator Begin { get; } = begin;
public ITransformer BeginTransformer { get; } = beginTransformer;
public NonTerminator Begin { get; } = begin;
}
private class Transformer : ITransformer