Generic Visitors
This commit is contained in:
File diff suppressed because one or more lines are too long
+38
-232
@@ -515,45 +515,6 @@ type
|
|||||||
IAstVisitor = interface
|
IAstVisitor = interface
|
||||||
// --- Central Dispatch Method (New) ---
|
// --- Central Dispatch Method (New) ---
|
||||||
function Visit(const Node: IAstNode): TDataValue;
|
function Visit(const Node: IAstNode): TDataValue;
|
||||||
|
|
||||||
// --- Specific Methods (Legacy / Hybrid Support) ---
|
|
||||||
function VisitConstant(const Node: IConstantNode): TDataValue;
|
|
||||||
function VisitIdentifier(const Node: IIdentifierNode): TDataValue;
|
|
||||||
function VisitKeyword(const Node: IKeywordNode): TDataValue;
|
|
||||||
|
|
||||||
// List Visits
|
|
||||||
function VisitParameterList(const Node: IParameterList): TDataValue;
|
|
||||||
function VisitArgumentList(const Node: IArgumentList): TDataValue;
|
|
||||||
function VisitExpressionList(const Node: IExpressionList): TDataValue;
|
|
||||||
function VisitRecordFieldList(const Node: IRecordFieldList): TDataValue;
|
|
||||||
function VisitRecordField(const Node: IRecordFieldNode): TDataValue;
|
|
||||||
|
|
||||||
function VisitIfExpression(const Node: IIfExpressionNode): TDataValue;
|
|
||||||
function VisitCondExpression(const Node: ICondExpressionNode): TDataValue;
|
|
||||||
function VisitLambdaExpression(const Node: ILambdaExpressionNode): TDataValue;
|
|
||||||
function VisitFunctionCall(const Node: IFunctionCallNode): TDataValue;
|
|
||||||
function VisitMacroExpansionNode(const Node: IMacroExpansionNode): TDataValue;
|
|
||||||
function VisitBlockExpression(const Node: IBlockExpressionNode): TDataValue;
|
|
||||||
function VisitVariableDeclaration(const Node: IVariableDeclarationNode): TDataValue;
|
|
||||||
function VisitAssignment(const Node: IAssignmentNode): TDataValue;
|
|
||||||
function VisitMacroDefinition(const Node: IMacroDefinitionNode): TDataValue;
|
|
||||||
function VisitQuasiquote(const Node: IQuasiquoteNode): TDataValue;
|
|
||||||
function VisitUnquote(const Node: IUnquoteNode): TDataValue;
|
|
||||||
function VisitUnquoteSplicing(const Node: IUnquoteSplicingNode): TDataValue;
|
|
||||||
function VisitIndexer(const Node: IIndexerNode): TDataValue;
|
|
||||||
function VisitMemberAccess(const Node: IMemberAccessNode): TDataValue;
|
|
||||||
function VisitRecordLiteral(const Node: IRecordLiteralNode): TDataValue;
|
|
||||||
function VisitCreateSeries(const Node: ICreateSeriesNode): TDataValue;
|
|
||||||
function VisitAddSeriesItem(const Node: IAddSeriesItemNode): TDataValue;
|
|
||||||
function VisitSeriesLength(const Node: ISeriesLengthNode): TDataValue;
|
|
||||||
function VisitRecurNode(const Node: IRecurNode): TDataValue;
|
|
||||||
function VisitNop(const Node: INopNode): TDataValue;
|
|
||||||
|
|
||||||
// Pipes
|
|
||||||
function VisitPipeInput(const Node: IPipeInputNode): TDataValue;
|
|
||||||
function VisitPipeSelectorList(const Node: IPipeSelectorList): TDataValue;
|
|
||||||
function VisitPipeInputList(const Node: IPipeInputList): TDataValue;
|
|
||||||
function VisitPipe(const Node: IPipeNode): TDataValue;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
IEvaluatorVisitor = interface(IAstVisitor)
|
IEvaluatorVisitor = interface(IAstVisitor)
|
||||||
@@ -571,7 +532,8 @@ type
|
|||||||
function GetIsTyped: Boolean; virtual;
|
function GetIsTyped: Boolean; virtual;
|
||||||
public
|
public
|
||||||
constructor Create(const AIdentity: IAstIdentity);
|
constructor Create(const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; virtual; abstract;
|
|
||||||
|
function Accept(const Visitor: IAstVisitor): TDataValue; virtual;
|
||||||
|
|
||||||
function AsConstant: IConstantNode; virtual;
|
function AsConstant: IConstantNode; virtual;
|
||||||
function AsIdentifier: IIdentifierNode; virtual;
|
function AsIdentifier: IIdentifierNode; virtual;
|
||||||
@@ -661,7 +623,6 @@ type
|
|||||||
protected
|
protected
|
||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsParameterList: IParameterList; override;
|
function AsParameterList: IParameterList; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -669,7 +630,6 @@ type
|
|||||||
protected
|
protected
|
||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsArgumentList: IArgumentList; override;
|
function AsArgumentList: IArgumentList; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -677,7 +637,6 @@ type
|
|||||||
protected
|
protected
|
||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsExpressionList: IExpressionList; override;
|
function AsExpressionList: IExpressionList; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -691,7 +650,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AKey: IKeywordNode; const AValue: IAstNode; const AIdentity: IAstIdentity);
|
constructor Create(const AKey: IKeywordNode; const AValue: IAstNode; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsRecordField: IRecordFieldNode; override;
|
function AsRecordField: IRecordFieldNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -699,7 +657,6 @@ type
|
|||||||
protected
|
protected
|
||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsRecordFieldList: IRecordFieldList; override;
|
function AsRecordFieldList: IRecordFieldList; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -713,7 +670,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AIdentity: IConstantIdentity; const AStaticType: IStaticType);
|
constructor Create(const AIdentity: IConstantIdentity; const AStaticType: IStaticType);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsConstant: IConstantNode; override;
|
function AsConstant: IConstantNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -727,7 +683,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AIdentity: INamedIdentity; const AAddress: TResolvedAddress; const AStaticType: IStaticType);
|
constructor Create(const AIdentity: INamedIdentity; const AAddress: TResolvedAddress; const AStaticType: IStaticType);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsIdentifier: IIdentifierNode; override;
|
function AsIdentifier: IIdentifierNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -739,7 +694,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AIdentity: IKeywordIdentity);
|
constructor Create(const AIdentity: IKeywordIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsKeyword: IKeywordNode; override;
|
function AsKeyword: IKeywordNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -751,7 +705,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AIdentity: IDefinitionIdentity; const AStaticType: IStaticType);
|
constructor Create(const AIdentity: IDefinitionIdentity; const AStaticType: IStaticType);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsCreateSeries: ICreateSeriesNode; override;
|
function AsCreateSeries: ICreateSeriesNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -771,7 +724,6 @@ type
|
|||||||
const AStaticType: IStaticType;
|
const AStaticType: IStaticType;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsIfExpression: IIfExpressionNode; override;
|
function AsIfExpression: IIfExpressionNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -790,7 +742,6 @@ type
|
|||||||
const AStaticType: IStaticType;
|
const AStaticType: IStaticType;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsCondExpression: ICondExpressionNode; override;
|
function AsCondExpression: ICondExpressionNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -822,7 +773,6 @@ type
|
|||||||
const AHasNestedLambdas, AIsPure: Boolean;
|
const AHasNestedLambdas, AIsPure: Boolean;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsLambdaExpression: ILambdaExpressionNode; override;
|
function AsLambdaExpression: ILambdaExpressionNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -850,7 +800,6 @@ type
|
|||||||
const AIsTargetPure: Boolean;
|
const AIsTargetPure: Boolean;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsFunctionCall: IFunctionCallNode; override;
|
function AsFunctionCall: IFunctionCallNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -871,7 +820,6 @@ type
|
|||||||
const ABody: IAstNode;
|
const ABody: IAstNode;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsMacroDefinition: IMacroDefinitionNode; override;
|
function AsMacroDefinition: IMacroDefinitionNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -885,7 +833,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const ACallNode: IFunctionCallNode; const AExpandedBody: IAstNode; const AIdentity: IAstIdentity);
|
constructor Create(const ACallNode: IFunctionCallNode; const AExpandedBody: IAstNode; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsMacroExpansion: IMacroExpansionNode; override;
|
function AsMacroExpansion: IMacroExpansionNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -897,7 +844,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AExpression: IAstNode; const AIdentity: IAstIdentity);
|
constructor Create(const AExpression: IAstNode; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsQuasiquote: IQuasiquoteNode; override;
|
function AsQuasiquote: IQuasiquoteNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -909,7 +855,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AExpression: IAstNode; const AIdentity: IAstIdentity);
|
constructor Create(const AExpression: IAstNode; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsUnquote: IUnquoteNode; override;
|
function AsUnquote: IUnquoteNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -921,7 +866,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AExpression: IQuasiquoteNode; const AIdentity: IAstIdentity);
|
constructor Create(const AExpression: IQuasiquoteNode; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsUnquoteSplicing: IUnquoteSplicingNode; override;
|
function AsUnquoteSplicing: IUnquoteSplicingNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -933,7 +877,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AArguments: IArgumentList; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
constructor Create(const AArguments: IArgumentList; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsRecur: IRecurNode; override;
|
function AsRecur: IRecurNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -945,7 +888,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AExpressions: IExpressionList; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
constructor Create(const AExpressions: IExpressionList; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsBlockExpression: IBlockExpressionNode; override;
|
function AsBlockExpression: IBlockExpressionNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -966,7 +908,6 @@ type
|
|||||||
const AIsBoxed: Boolean;
|
const AIsBoxed: Boolean;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsVariableDeclaration: IVariableDeclarationNode; override;
|
function AsVariableDeclaration: IVariableDeclarationNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -979,7 +920,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const ATarget, AValue: IAstNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
constructor Create(const ATarget, AValue: IAstNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsAssignment: IAssignmentNode; override;
|
function AsAssignment: IAssignmentNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -992,7 +932,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const ABase, AIndex: IAstNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
constructor Create(const ABase, AIndex: IAstNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsIndexer: IIndexerNode; override;
|
function AsIndexer: IIndexerNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1011,7 +950,6 @@ type
|
|||||||
const AStaticType: IStaticType;
|
const AStaticType: IStaticType;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsMemberAccess: IMemberAccessNode; override;
|
function AsMemberAccess: IMemberAccessNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1033,7 +971,6 @@ type
|
|||||||
const AStaticType: IStaticType;
|
const AStaticType: IStaticType;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsRecordLiteral: IRecordLiteralNode; override;
|
function AsRecordLiteral: IRecordLiteralNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1053,7 +990,6 @@ type
|
|||||||
const AStaticType: IStaticType;
|
const AStaticType: IStaticType;
|
||||||
const AIdentity: IAstIdentity
|
const AIdentity: IAstIdentity
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsAddSeriesItem: IAddSeriesItemNode; override;
|
function AsAddSeriesItem: IAddSeriesItemNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1065,7 +1001,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const ASeries: IIdentifierNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
constructor Create(const ASeries: IIdentifierNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsSeriesLength: ISeriesLengthNode; override;
|
function AsSeriesLength: ISeriesLengthNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1074,7 +1009,6 @@ type
|
|||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
constructor Create(const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
constructor Create(const AStaticType: IStaticType; const AIdentity: IAstIdentity);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsNop: INopNode; override;
|
function AsNop: INopNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1082,7 +1016,6 @@ type
|
|||||||
protected
|
protected
|
||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsPipeSelectorList: IPipeSelectorList; override;
|
function AsPipeSelectorList: IPipeSelectorList; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1101,7 +1034,6 @@ type
|
|||||||
const AIdentity: IAstIdentity;
|
const AIdentity: IAstIdentity;
|
||||||
const AStaticType: IStaticType
|
const AStaticType: IStaticType
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsPipeInput: IPipeInputNode; override;
|
function AsPipeInput: IPipeInputNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1109,7 +1041,6 @@ type
|
|||||||
protected
|
protected
|
||||||
function GetKind: TAstNodeKind; override;
|
function GetKind: TAstNodeKind; override;
|
||||||
public
|
public
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsPipeInputList: IPipeInputList; override;
|
function AsPipeInputList: IPipeInputList; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1128,7 +1059,6 @@ type
|
|||||||
const AIdentity: IAstIdentity;
|
const AIdentity: IAstIdentity;
|
||||||
const AStaticType: IStaticType
|
const AStaticType: IStaticType
|
||||||
);
|
);
|
||||||
function Accept(const Visitor: IAstVisitor): TDataValue; override;
|
|
||||||
function AsPipe: IPipeNode; override;
|
function AsPipe: IPipeNode; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -1303,15 +1233,24 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TAstNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
||||||
|
begin
|
||||||
|
// Central Dispatch: Delegate to the generic Visit method of the visitor.
|
||||||
|
// The visitor uses Node.Kind to look up the correct handler.
|
||||||
|
Result := Visitor.Visit(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
// Default implementations for As... casting methods (Return nil)
|
// Default implementations for As... casting methods (Return nil)
|
||||||
function TAstNode.AsConstant: IConstantNode;
|
function TAstNode.AsConstant: IConstantNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsIdentifier: IIdentifierNode;
|
function TAstNode.AsIdentifier: IIdentifierNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsKeyword: IKeywordNode;
|
function TAstNode.AsKeyword: IKeywordNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
@@ -1321,18 +1260,22 @@ function TAstNode.AsParameterList: IParameterList;
|
|||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsArgumentList: IArgumentList;
|
function TAstNode.AsArgumentList: IArgumentList;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsExpressionList: IExpressionList;
|
function TAstNode.AsExpressionList: IExpressionList;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsRecordFieldList: IRecordFieldList;
|
function TAstNode.AsRecordFieldList: IRecordFieldList;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsRecordField: IRecordFieldNode;
|
function TAstNode.AsRecordField: IRecordFieldNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
@@ -1342,82 +1285,102 @@ function TAstNode.AsIfExpression: IIfExpressionNode;
|
|||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsCondExpression: ICondExpressionNode;
|
function TAstNode.AsCondExpression: ICondExpressionNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsLambdaExpression: ILambdaExpressionNode;
|
function TAstNode.AsLambdaExpression: ILambdaExpressionNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsFunctionCall: IFunctionCallNode;
|
function TAstNode.AsFunctionCall: IFunctionCallNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsMacroExpansion: IMacroExpansionNode;
|
function TAstNode.AsMacroExpansion: IMacroExpansionNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsBlockExpression: IBlockExpressionNode;
|
function TAstNode.AsBlockExpression: IBlockExpressionNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsVariableDeclaration: IVariableDeclarationNode;
|
function TAstNode.AsVariableDeclaration: IVariableDeclarationNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsAssignment: IAssignmentNode;
|
function TAstNode.AsAssignment: IAssignmentNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsMacroDefinition: IMacroDefinitionNode;
|
function TAstNode.AsMacroDefinition: IMacroDefinitionNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsQuasiquote: IQuasiquoteNode;
|
function TAstNode.AsQuasiquote: IQuasiquoteNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsUnquote: IUnquoteNode;
|
function TAstNode.AsUnquote: IUnquoteNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsUnquoteSplicing: IUnquoteSplicingNode;
|
function TAstNode.AsUnquoteSplicing: IUnquoteSplicingNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsIndexer: IIndexerNode;
|
function TAstNode.AsIndexer: IIndexerNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsMemberAccess: IMemberAccessNode;
|
function TAstNode.AsMemberAccess: IMemberAccessNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsRecordLiteral: IRecordLiteralNode;
|
function TAstNode.AsRecordLiteral: IRecordLiteralNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsCreateSeries: ICreateSeriesNode;
|
function TAstNode.AsCreateSeries: ICreateSeriesNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsAddSeriesItem: IAddSeriesItemNode;
|
function TAstNode.AsAddSeriesItem: IAddSeriesItemNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsSeriesLength: ISeriesLengthNode;
|
function TAstNode.AsSeriesLength: ISeriesLengthNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsRecur: IRecurNode;
|
function TAstNode.AsRecur: IRecurNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsNop: INopNode;
|
function TAstNode.AsNop: INopNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsTypedNode: IAstTypedNode;
|
function TAstNode.AsTypedNode: IAstTypedNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
@@ -1427,14 +1390,17 @@ function TAstNode.AsPipeInput: IPipeInputNode;
|
|||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsPipeSelectorList: IPipeSelectorList;
|
function TAstNode.AsPipeSelectorList: IPipeSelectorList;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsPipeInputList: IPipeInputList;
|
function TAstNode.AsPipeInputList: IPipeInputList;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstNode.AsPipe: IPipeNode;
|
function TAstNode.AsPipe: IPipeNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
@@ -1493,11 +1459,6 @@ end;
|
|||||||
|
|
||||||
{ TParameterList }
|
{ TParameterList }
|
||||||
|
|
||||||
function TParameterList.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitParameterList(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TParameterList.AsParameterList: IParameterList;
|
function TParameterList.AsParameterList: IParameterList;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1510,11 +1471,6 @@ end;
|
|||||||
|
|
||||||
{ TArgumentList }
|
{ TArgumentList }
|
||||||
|
|
||||||
function TArgumentList.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitArgumentList(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TArgumentList.AsArgumentList: IArgumentList;
|
function TArgumentList.AsArgumentList: IArgumentList;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1527,11 +1483,6 @@ end;
|
|||||||
|
|
||||||
{ TExpressionList }
|
{ TExpressionList }
|
||||||
|
|
||||||
function TExpressionList.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitExpressionList(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TExpressionList.AsExpressionList: IExpressionList;
|
function TExpressionList.AsExpressionList: IExpressionList;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1551,11 +1502,6 @@ begin
|
|||||||
FValue := AValue;
|
FValue := AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TRecordFieldNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitRecordField(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TRecordFieldNode.AsRecordField: IRecordFieldNode;
|
function TRecordFieldNode.AsRecordField: IRecordFieldNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1578,11 +1524,6 @@ end;
|
|||||||
|
|
||||||
{ TRecordFieldList }
|
{ TRecordFieldList }
|
||||||
|
|
||||||
function TRecordFieldList.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitRecordFieldList(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TRecordFieldList.AsRecordFieldList: IRecordFieldList;
|
function TRecordFieldList.AsRecordFieldList: IRecordFieldList;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1601,11 +1542,6 @@ begin
|
|||||||
FConstIdentity := AIdentity;
|
FConstIdentity := AIdentity;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TConstantNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitConstant(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TConstantNode.AsConstant: IConstantNode;
|
function TConstantNode.AsConstant: IConstantNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1630,11 +1566,6 @@ begin
|
|||||||
FAddress := AAddress;
|
FAddress := AAddress;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TIdentifierNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitIdentifier(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TIdentifierNode.AsIdentifier: IIdentifierNode;
|
function TIdentifierNode.AsIdentifier: IIdentifierNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1663,11 +1594,6 @@ begin
|
|||||||
FKeywordIdentity := AIdentity;
|
FKeywordIdentity := AIdentity;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TKeywordNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitKeyword(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TKeywordNode.AsKeyword: IKeywordNode;
|
function TKeywordNode.AsKeyword: IKeywordNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1691,11 +1617,6 @@ begin
|
|||||||
FDefIdentity := AIdentity;
|
FDefIdentity := AIdentity;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCreateSeriesNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitCreateSeries(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCreateSeriesNode.AsCreateSeries: ICreateSeriesNode;
|
function TCreateSeriesNode.AsCreateSeries: ICreateSeriesNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1725,11 +1646,6 @@ begin
|
|||||||
FElseBranch := AElseBranch;
|
FElseBranch := AElseBranch;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TIfExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitIfExpression(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TIfExpressionNode.AsIfExpression: IIfExpressionNode;
|
function TIfExpressionNode.AsIfExpression: IIfExpressionNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1766,11 +1682,6 @@ begin
|
|||||||
FElseBranch := AElseBranch;
|
FElseBranch := AElseBranch;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCondExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitCondExpression(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TCondExpressionNode.AsCondExpression: ICondExpressionNode;
|
function TCondExpressionNode.AsCondExpression: ICondExpressionNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1814,11 +1725,6 @@ begin
|
|||||||
FIsPure := AIsPure;
|
FIsPure := AIsPure;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLambdaExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitLambdaExpression(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TLambdaExpressionNode.AsLambdaExpression: ILambdaExpressionNode;
|
function TLambdaExpressionNode.AsLambdaExpression: ILambdaExpressionNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1877,11 +1783,6 @@ begin
|
|||||||
FIsTargetPure := AIsTargetPure;
|
FIsTargetPure := AIsTargetPure;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFunctionCallNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitFunctionCall(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TFunctionCallNode.AsFunctionCall: IFunctionCallNode;
|
function TFunctionCallNode.AsFunctionCall: IFunctionCallNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1927,11 +1828,6 @@ begin
|
|||||||
FBody := ABody;
|
FBody := ABody;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TMacroDefinitionNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitMacroDefinition(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TMacroDefinitionNode.AsMacroDefinition: IMacroDefinitionNode;
|
function TMacroDefinitionNode.AsMacroDefinition: IMacroDefinitionNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1966,11 +1862,6 @@ begin
|
|||||||
FExpandedBody := AExpandedBody;
|
FExpandedBody := AExpandedBody;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TMacroExpansionNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitMacroExpansionNode(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TMacroExpansionNode.AsMacroExpansion: IMacroExpansionNode;
|
function TMacroExpansionNode.AsMacroExpansion: IMacroExpansionNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -1997,11 +1888,6 @@ begin
|
|||||||
FExpression := AExpression;
|
FExpression := AExpression;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TQuasiquoteNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitQuasiquote(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TQuasiquoteNode.AsQuasiquote: IQuasiquoteNode;
|
function TQuasiquoteNode.AsQuasiquote: IQuasiquoteNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2024,11 +1910,6 @@ begin
|
|||||||
FExpression := AExpression;
|
FExpression := AExpression;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TUnquoteNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitUnquote(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TUnquoteNode.AsUnquote: IUnquoteNode;
|
function TUnquoteNode.AsUnquote: IUnquoteNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2051,11 +1932,6 @@ begin
|
|||||||
FExpression := AExpression;
|
FExpression := AExpression;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TUnquoteSplicingNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitUnquoteSplicing(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TUnquoteSplicingNode.AsUnquoteSplicing: IUnquoteSplicingNode;
|
function TUnquoteSplicingNode.AsUnquoteSplicing: IUnquoteSplicingNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2078,11 +1954,6 @@ begin
|
|||||||
FArguments := AArguments;
|
FArguments := AArguments;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TRecurNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitRecurNode(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TRecurNode.AsRecur: IRecurNode;
|
function TRecurNode.AsRecur: IRecurNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2105,11 +1976,6 @@ begin
|
|||||||
FExpressions := AExpressions;
|
FExpressions := AExpressions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TBlockExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitBlockExpression(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TBlockExpressionNode.AsBlockExpression: IBlockExpressionNode;
|
function TBlockExpressionNode.AsBlockExpression: IBlockExpressionNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2140,11 +2006,6 @@ begin
|
|||||||
FIsBoxed := AIsBoxed;
|
FIsBoxed := AIsBoxed;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TVariableDeclarationNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitVariableDeclaration(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TVariableDeclarationNode.AsVariableDeclaration: IVariableDeclarationNode;
|
function TVariableDeclarationNode.AsVariableDeclaration: IVariableDeclarationNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2176,11 +2037,6 @@ begin
|
|||||||
FValue := AValue;
|
FValue := AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAssignmentNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitAssignment(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TAssignmentNode.AsAssignment: IAssignmentNode;
|
function TAssignmentNode.AsAssignment: IAssignmentNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2208,11 +2064,6 @@ begin
|
|||||||
FIndex := AIndex;
|
FIndex := AIndex;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TIndexerNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitIndexer(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TIndexerNode.AsIndexer: IIndexerNode;
|
function TIndexerNode.AsIndexer: IIndexerNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2245,11 +2096,6 @@ begin
|
|||||||
FMember := AMember;
|
FMember := AMember;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TMemberAccessNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitMemberAccess(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TMemberAccessNode.AsMemberAccess: IMemberAccessNode;
|
function TMemberAccessNode.AsMemberAccess: IMemberAccessNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2284,11 +2130,6 @@ begin
|
|||||||
FGenericDef := AGenericDef;
|
FGenericDef := AGenericDef;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TRecordLiteralNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitRecordLiteral(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TRecordLiteralNode.AsRecordLiteral: IRecordLiteralNode;
|
function TRecordLiteralNode.AsRecordLiteral: IRecordLiteralNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2326,11 +2167,6 @@ begin
|
|||||||
FLookback := ALookback;
|
FLookback := ALookback;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAddSeriesItemNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitAddSeriesItem(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TAddSeriesItemNode.AsAddSeriesItem: IAddSeriesItemNode;
|
function TAddSeriesItemNode.AsAddSeriesItem: IAddSeriesItemNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2361,11 +2197,6 @@ begin
|
|||||||
FSeries := ASeries;
|
FSeries := ASeries;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSeriesLengthNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitSeriesLength(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TSeriesLengthNode.AsSeriesLength: ISeriesLengthNode;
|
function TSeriesLengthNode.AsSeriesLength: ISeriesLengthNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2387,11 +2218,6 @@ begin
|
|||||||
inherited Create(AStaticType, AIdentity);
|
inherited Create(AStaticType, AIdentity);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TNopNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitNop(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TNopNode.AsNop: INopNode;
|
function TNopNode.AsNop: INopNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2433,11 +2259,6 @@ end;
|
|||||||
|
|
||||||
{ TPipeSelectorList }
|
{ TPipeSelectorList }
|
||||||
|
|
||||||
function TPipeSelectorList.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitPipeSelectorList(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPipeSelectorList.AsPipeSelectorList: IPipeSelectorList;
|
function TPipeSelectorList.AsPipeSelectorList: IPipeSelectorList;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2462,11 +2283,6 @@ begin
|
|||||||
FSelectors := ASelectors;
|
FSelectors := ASelectors;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPipeInputNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitPipeInput(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPipeInputNode.AsPipeInput: IPipeInputNode;
|
function TPipeInputNode.AsPipeInput: IPipeInputNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2489,11 +2305,6 @@ end;
|
|||||||
|
|
||||||
{ TPipeInputList }
|
{ TPipeInputList }
|
||||||
|
|
||||||
function TPipeInputList.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitPipeInputList(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPipeInputList.AsPipeInputList: IPipeInputList;
|
function TPipeInputList.AsPipeInputList: IPipeInputList;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
@@ -2518,11 +2329,6 @@ begin
|
|||||||
FTransformation := ATransformation;
|
FTransformation := ATransformation;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPipeNode.Accept(const Visitor: IAstVisitor): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := Visitor.VisitPipe(Self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TPipeNode.AsPipe: IPipeNode;
|
function TPipeNode.AsPipe: IPipeNode;
|
||||||
begin
|
begin
|
||||||
Result := Self;
|
Result := Self;
|
||||||
|
|||||||
@@ -25,77 +25,8 @@ type
|
|||||||
// IAstVisitor explicit implementation (bridge methods)
|
// IAstVisitor explicit implementation (bridge methods)
|
||||||
function IAstVisitor.Visit = VisitBridge;
|
function IAstVisitor.Visit = VisitBridge;
|
||||||
|
|
||||||
// Legacy bridge methods for IAstVisitor interface compliance
|
|
||||||
function IAstVisitor.VisitConstant = DoVisitConstant;
|
|
||||||
function IAstVisitor.VisitIdentifier = DoVisitIdentifier;
|
|
||||||
function IAstVisitor.VisitKeyword = DoVisitKeyword;
|
|
||||||
|
|
||||||
function IAstVisitor.VisitParameterList = DoVisitParameterList;
|
|
||||||
function IAstVisitor.VisitArgumentList = DoVisitArgumentList;
|
|
||||||
function IAstVisitor.VisitExpressionList = DoVisitExpressionList;
|
|
||||||
function IAstVisitor.VisitRecordFieldList = DoVisitRecordFieldList;
|
|
||||||
function IAstVisitor.VisitRecordField = DoVisitRecordField;
|
|
||||||
|
|
||||||
function IAstVisitor.VisitIfExpression = DoVisitIfExpression;
|
|
||||||
function IAstVisitor.VisitCondExpression = DoVisitCondExpression;
|
|
||||||
function IAstVisitor.VisitLambdaExpression = DoVisitLambdaExpression;
|
|
||||||
function IAstVisitor.VisitFunctionCall = DoVisitFunctionCall;
|
|
||||||
function IAstVisitor.VisitMacroExpansionNode = DoVisitMacroExpansionNode;
|
|
||||||
function IAstVisitor.VisitBlockExpression = DoVisitBlockExpression;
|
|
||||||
function IAstVisitor.VisitVariableDeclaration = DoVisitVariableDeclaration;
|
|
||||||
function IAstVisitor.VisitAssignment = DoVisitAssignment;
|
|
||||||
function IAstVisitor.VisitMacroDefinition = DoVisitMacroDefinition;
|
|
||||||
function IAstVisitor.VisitQuasiquote = DoVisitQuasiquote;
|
|
||||||
function IAstVisitor.VisitUnquote = DoVisitUnquote;
|
|
||||||
function IAstVisitor.VisitUnquoteSplicing = DoVisitUnquoteSplicing;
|
|
||||||
function IAstVisitor.VisitIndexer = DoVisitIndexer;
|
|
||||||
function IAstVisitor.VisitMemberAccess = DoVisitMemberAccess;
|
|
||||||
function IAstVisitor.VisitRecordLiteral = DoVisitRecordLiteral;
|
|
||||||
function IAstVisitor.VisitCreateSeries = DoVisitCreateSeries;
|
|
||||||
function IAstVisitor.VisitAddSeriesItem = DoVisitAddSeriesItem;
|
|
||||||
function IAstVisitor.VisitSeriesLength = DoVisitSeriesLength;
|
|
||||||
function IAstVisitor.VisitRecurNode = DoVisitRecurNode;
|
|
||||||
function IAstVisitor.VisitNop = DoVisitNop;
|
|
||||||
|
|
||||||
function IAstVisitor.VisitPipeInput = DoVisitPipeInput;
|
|
||||||
function IAstVisitor.VisitPipeSelectorList = DoVisitPipeSelectorList;
|
|
||||||
function IAstVisitor.VisitPipeInputList = DoVisitPipeInputList;
|
|
||||||
function IAstVisitor.VisitPipe = DoVisitPipe;
|
|
||||||
|
|
||||||
// Private helpers to wrap T into TDataValue for the non-generic interface
|
// Private helpers to wrap T into TDataValue for the non-generic interface
|
||||||
function VisitBridge(const Node: IAstNode): TDataValue;
|
function VisitBridge(const Node: IAstNode): TDataValue;
|
||||||
function DoVisitConstant(const Node: IConstantNode): TDataValue;
|
|
||||||
function DoVisitIdentifier(const Node: IIdentifierNode): TDataValue;
|
|
||||||
function DoVisitKeyword(const Node: IKeywordNode): TDataValue;
|
|
||||||
function DoVisitParameterList(const Node: IParameterList): TDataValue;
|
|
||||||
function DoVisitArgumentList(const Node: IArgumentList): TDataValue;
|
|
||||||
function DoVisitExpressionList(const Node: IExpressionList): TDataValue;
|
|
||||||
function DoVisitRecordFieldList(const Node: IRecordFieldList): TDataValue;
|
|
||||||
function DoVisitRecordField(const Node: IRecordFieldNode): TDataValue;
|
|
||||||
function DoVisitIfExpression(const Node: IIfExpressionNode): TDataValue;
|
|
||||||
function DoVisitCondExpression(const Node: ICondExpressionNode): TDataValue;
|
|
||||||
function DoVisitLambdaExpression(const Node: ILambdaExpressionNode): TDataValue;
|
|
||||||
function DoVisitFunctionCall(const Node: IFunctionCallNode): TDataValue;
|
|
||||||
function DoVisitMacroExpansionNode(const Node: IMacroExpansionNode): TDataValue;
|
|
||||||
function DoVisitBlockExpression(const Node: IBlockExpressionNode): TDataValue;
|
|
||||||
function DoVisitVariableDeclaration(const Node: IVariableDeclarationNode): TDataValue;
|
|
||||||
function DoVisitAssignment(const Node: IAssignmentNode): TDataValue;
|
|
||||||
function DoVisitMacroDefinition(const Node: IMacroDefinitionNode): TDataValue;
|
|
||||||
function DoVisitQuasiquote(const Node: IQuasiquoteNode): TDataValue;
|
|
||||||
function DoVisitUnquote(const Node: IUnquoteNode): TDataValue;
|
|
||||||
function DoVisitUnquoteSplicing(const Node: IUnquoteSplicingNode): TDataValue;
|
|
||||||
function DoVisitIndexer(const Node: IIndexerNode): TDataValue;
|
|
||||||
function DoVisitMemberAccess(const Node: IMemberAccessNode): TDataValue;
|
|
||||||
function DoVisitRecordLiteral(const Node: IRecordLiteralNode): TDataValue;
|
|
||||||
function DoVisitCreateSeries(const Node: ICreateSeriesNode): TDataValue;
|
|
||||||
function DoVisitAddSeriesItem(const Node: IAddSeriesItemNode): TDataValue;
|
|
||||||
function DoVisitSeriesLength(const Node: ISeriesLengthNode): TDataValue;
|
|
||||||
function DoVisitRecurNode(const Node: IRecurNode): TDataValue;
|
|
||||||
function DoVisitNop(const Node: INopNode): TDataValue;
|
|
||||||
function DoVisitPipeInput(const Node: IPipeInputNode): TDataValue;
|
|
||||||
function DoVisitPipeSelectorList(const Node: IPipeSelectorList): TDataValue;
|
|
||||||
function DoVisitPipeInputList(const Node: IPipeInputList): TDataValue;
|
|
||||||
function DoVisitPipe(const Node: IPipeNode): TDataValue;
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
// Registers a handler for a specific node kind.
|
// Registers a handler for a specific node kind.
|
||||||
@@ -293,135 +224,6 @@ begin
|
|||||||
Result := TDataValue.FromGeneric<T>(Visit(Node));
|
Result := TDataValue.FromGeneric<T>(Visit(Node));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TAstVisitor<T>.DoVisitConstant(const Node: IConstantNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitConstant(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitIdentifier(const Node: IIdentifierNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitIdentifier(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitKeyword(const Node: IKeywordNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitKeyword(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitParameterList(const Node: IParameterList): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitParameterList(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitArgumentList(const Node: IArgumentList): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitArgumentList(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitExpressionList(const Node: IExpressionList): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitExpressionList(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitRecordFieldList(const Node: IRecordFieldList): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitRecordFieldList(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitRecordField(const Node: IRecordFieldNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitRecordField(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitIfExpression(const Node: IIfExpressionNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitIfExpression(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitCondExpression(const Node: ICondExpressionNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitCondExpression(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitLambdaExpression(const Node: ILambdaExpressionNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitLambdaExpression(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitFunctionCall(const Node: IFunctionCallNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitFunctionCall(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitMacroExpansionNode(const Node: IMacroExpansionNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitMacroExpansionNode(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitBlockExpression(const Node: IBlockExpressionNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitBlockExpression(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitVariableDeclaration(const Node: IVariableDeclarationNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitVariableDeclaration(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitAssignment(const Node: IAssignmentNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitAssignment(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitMacroDefinition(const Node: IMacroDefinitionNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitMacroDefinition(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitQuasiquote(const Node: IQuasiquoteNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitQuasiquote(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitUnquote(const Node: IUnquoteNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitUnquote(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitUnquoteSplicing(const Node: IUnquoteSplicingNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitUnquoteSplicing(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitIndexer(const Node: IIndexerNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitIndexer(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitMemberAccess(const Node: IMemberAccessNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitMemberAccess(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitRecordLiteral(const Node: IRecordLiteralNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitRecordLiteral(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitCreateSeries(const Node: ICreateSeriesNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitCreateSeries(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitAddSeriesItem(const Node: IAddSeriesItemNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitAddSeriesItem(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitSeriesLength(const Node: ISeriesLengthNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitSeriesLength(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitRecurNode(const Node: IRecurNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitRecurNode(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitNop(const Node: INopNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitNop(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitPipeInput(const Node: IPipeInputNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitPipeInput(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitPipeSelectorList(const Node: IPipeSelectorList): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitPipeSelectorList(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitPipeInputList(const Node: IPipeInputList): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitPipeInputList(Node));
|
|
||||||
end;
|
|
||||||
function TAstVisitor<T>.DoVisitPipe(const Node: IPipeNode): TDataValue;
|
|
||||||
begin
|
|
||||||
Result := TDataValue.FromGeneric<T>(VisitPipe(Node));
|
|
||||||
end;
|
|
||||||
|
|
||||||
// --- Default implementations (analogous to original abstract class stubs) ---
|
// --- Default implementations (analogous to original abstract class stubs) ---
|
||||||
|
|
||||||
function TAstVisitor<T>.VisitConstant(const Node: IConstantNode): T;
|
function TAstVisitor<T>.VisitConstant(const Node: IConstantNode): T;
|
||||||
|
|||||||
Reference in New Issue
Block a user