RECUR keyword added

This commit is contained in:
Michael Schimmel
2025-09-20 12:06:51 +02:00
parent e03155179a
commit 81dd69bf49
13 changed files with 352 additions and 98 deletions
+22
View File
@@ -30,6 +30,7 @@ type
function VisitCreateSeries(const Node: ICreateSeriesNode): TDataValue;
function VisitAddSeriesItem(const Node: IAddSeriesItemNode): TDataValue;
function VisitSeriesLength(const Node: ISeriesLengthNode): TDataValue;
function VisitRecurNode(const Node: IRecurNode): TDataValue;
end;
implementation
@@ -105,6 +106,27 @@ begin
end;
end;
function TAstToTextVisitor.VisitRecurNode(const Node: IRecurNode): TDataValue;
var
i: Integer;
sb: TStringBuilder;
begin
sb := TStringBuilder.Create;
try
sb.Append('recur(');
for i := 0 to High(Node.Arguments) do
begin
sb.Append(Node.Arguments[i].Accept(Self).AsText);
if i < High(Node.Arguments) then
sb.Append(', ');
end;
sb.Append(')');
Result := sb.ToString;
finally
sb.Free;
end;
end;
function TAstToTextVisitor.VisitIdentifier(const Node: IIdentifierNode): TDataValue;
begin
Result := Node.Name;