Refactor Parser States

Refactor the class hierarchy for parser states so that
there is a parser state that acts more like a type and
one that acts more like a value (the latter, then, serves
as the base class for the other instantiated parser states).

Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
This commit is contained in:
Will Hawkins
2026-03-30 05:16:48 -04:00
parent fda9858680
commit 7c9ecc2438
21 changed files with 199 additions and 264 deletions
+2 -2
View File
@@ -84,7 +84,7 @@ public struct Parser {
static func Compile(
node: Node, forState state_identifier: Common.Identifier,
withStatements stmts: [EvaluatableStatement], withContext context: CompilerContext
) -> Result<(ParserState, CompilerContext)> {
) -> Result<(InstantiatedParserState, CompilerContext)> {
#RequireNodeType<Node, (EvaluatableStatement, CompilerContext)>(
node: node, type: "parserTransitionStatement", nice_type_name: "parser transition statement"
@@ -177,7 +177,7 @@ public struct Parser {
public struct State {
static func Compile(
node: Node, withContext context: CompilerContext
) -> Result<(ParserState, CompilerContext)> {
) -> Result<(InstantiatedParserState, CompilerContext)> {
var currentChildIdx = 0
var currentChildIdxSafe = 1