Implementing Pipes
This commit is contained in:
@@ -35,7 +35,7 @@ type
|
||||
function VisitRecordField(const Node: IRecordFieldNode): TDataValue; virtual;
|
||||
|
||||
function VisitIfExpression(const Node: IIfExpressionNode): TDataValue; virtual;
|
||||
function VisitCondExpression(const Node: ICondExpressionNode): TDataValue; virtual; // Replaces Ternary
|
||||
function VisitCondExpression(const Node: ICondExpressionNode): TDataValue; virtual;
|
||||
function VisitLambdaExpression(const Node: ILambdaExpressionNode): TDataValue; virtual;
|
||||
function VisitMacroDefinition(const Node: IMacroDefinitionNode): TDataValue; virtual;
|
||||
function VisitQuasiquote(const Node: IQuasiquoteNode): TDataValue; virtual;
|
||||
@@ -55,6 +55,12 @@ type
|
||||
function VisitRecurNode(const Node: IRecurNode): TDataValue; virtual;
|
||||
function VisitNop(const Node: INopNode): TDataValue; virtual;
|
||||
|
||||
// Pipe Support
|
||||
function VisitPipeInput(const Node: IPipeInputNode): TDataValue; virtual;
|
||||
function VisitPipeSelectorList(const Node: IPipeSelectorList): TDataValue; virtual;
|
||||
function VisitPipeInputList(const Node: IPipeInputList): TDataValue; virtual;
|
||||
function VisitPipe(const Node: IPipeNode): TDataValue; virtual;
|
||||
|
||||
function IsTruthy(const AValue: TDataValue): Boolean; inline;
|
||||
|
||||
// Returns a closure that can create the correct type of visitor for a lambda's body.
|
||||
@@ -627,4 +633,33 @@ begin
|
||||
Result := TDataValue.Void;
|
||||
end;
|
||||
|
||||
// --- Pipe Visitors Stubs ---
|
||||
|
||||
function TEvaluatorVisitor.VisitPipe(const Node: IPipeNode): TDataValue;
|
||||
begin
|
||||
// Placeholder for Phase 4 (Runtime Integration)
|
||||
// Here we will:
|
||||
// 1. Resolve Input Streams from Scope
|
||||
// 2. Build TPipeConfig
|
||||
// 3. Compile Lambda to TDataValue.TFunc
|
||||
// 4. Create Adapter
|
||||
// 5. Create TPipeStream
|
||||
raise EEvaluatorException.Create('Pipe execution is not yet implemented.');
|
||||
end;
|
||||
|
||||
function TEvaluatorVisitor.VisitPipeInput(const Node: IPipeInputNode): TDataValue;
|
||||
begin
|
||||
Result := TDataValue.Void;
|
||||
end;
|
||||
|
||||
function TEvaluatorVisitor.VisitPipeSelectorList(const Node: IPipeSelectorList): TDataValue;
|
||||
begin
|
||||
Result := TDataValue.Void;
|
||||
end;
|
||||
|
||||
function TEvaluatorVisitor.VisitPipeInputList(const Node: IPipeInputList): TDataValue;
|
||||
begin
|
||||
Result := TDataValue.Void;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Reference in New Issue
Block a user