add: Array declaration and variable indexer.
This commit is contained in:
@@ -2,9 +2,23 @@
|
||||
|
||||
namespace CanonSharp.Pascal.SyntaxTree;
|
||||
|
||||
public sealed class TypeNode(LexicalToken typeToken) : SyntaxNodeBase
|
||||
public record struct ArrayRange(int Left, int Right);
|
||||
|
||||
public sealed class TypeNode : SyntaxNodeBase
|
||||
{
|
||||
public override SyntaxNodeType NodeType => SyntaxNodeType.Type;
|
||||
|
||||
public LexicalToken TypeToken => typeToken;
|
||||
public LexicalToken TypeToken { get; }
|
||||
|
||||
public List<ArrayRange> ArrayRanges { get; } = [];
|
||||
|
||||
public TypeNode(LexicalToken typeToken)
|
||||
{
|
||||
TypeToken = typeToken;
|
||||
}
|
||||
|
||||
public TypeNode(LexicalToken typeToken, IEnumerable<ArrayRange> arrayRanges) : this(typeToken)
|
||||
{
|
||||
ArrayRanges.AddRange(arrayRanges);
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,23 @@
|
||||
namespace CanonSharp.Pascal.SyntaxTree;
|
||||
using CanonSharp.Pascal.Scanner;
|
||||
|
||||
public sealed class VariableNode(string name) : SyntaxNodeBase
|
||||
namespace CanonSharp.Pascal.SyntaxTree;
|
||||
|
||||
public sealed class VariableNode : SyntaxNodeBase
|
||||
{
|
||||
public override SyntaxNodeType NodeType => SyntaxNodeType.Variable;
|
||||
|
||||
public string IdentifierName => name;
|
||||
public LexicalToken Identifier { get; }
|
||||
|
||||
public List<SyntaxNodeBase> Indexers { get; } = [];
|
||||
|
||||
public VariableNode(LexicalToken identifier)
|
||||
{
|
||||
Identifier = identifier;
|
||||
}
|
||||
|
||||
public VariableNode(LexicalToken identifier, IEnumerable<SyntaxNodeBase> expressions)
|
||||
{
|
||||
Identifier = identifier;
|
||||
Indexers.AddRange(expressions);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user