This commit is contained in:
nub31
2026-02-24 21:51:36 +01:00
parent 35867ffa28
commit 3ebaa67b6d
4 changed files with 242 additions and 78 deletions

View File

@@ -384,7 +384,7 @@ public class Parser
var module = ExpectIdent();
ExpectSymbol(Symbol.ColonColon);
var enumName = ExpectIdent();
ExpectSymbol(Symbol.Period);
ExpectSymbol(Symbol.ColonColon);
var variantName = ExpectIdent();
var initializers = new List<NodeExpressionEnumLiteral.Initializer>();
@@ -484,9 +484,14 @@ public class Parser
case "u64":
return new NodeTypeUInt(TokensFrom(startIndex), 64);
default:
ExpectSymbol(Symbol.ColonColon);
var name = ExpectIdent();
return new NodeTypeCustom(TokensFrom(startIndex), ident, name);
List<TokenIdent> secitons = [ident];
while (TryExpectSymbol(Symbol.ColonColon))
{
ident = ExpectIdent();
secitons.Add(ident);
}
return new NodeTypeNamed(TokensFrom(startIndex), secitons);
}
}
@@ -938,10 +943,9 @@ public class NodeTypeBool(List<Token> tokens) : NodeType(tokens);
public class NodeTypeString(List<Token> tokens) : NodeType(tokens);
public class NodeTypeCustom(List<Token> tokens, TokenIdent module, TokenIdent name) : NodeType(tokens)
public class NodeTypeNamed(List<Token> tokens, List<TokenIdent> sections) : NodeType(tokens)
{
public TokenIdent Module { get; } = module;
public TokenIdent Name { get; } = name;
public List<TokenIdent> Sections { get; } = sections;
}
public class NodeTypePointer(List<Token> tokens, NodeType to) : NodeType(tokens)