Beginning Editor
This commit is contained in:
+58
-62
@@ -27,7 +27,6 @@ type
|
||||
// --- Forward Declarations to break cycles ---
|
||||
IAstVisitor = interface;
|
||||
IAstNode = interface;
|
||||
IExpressionNode = interface;
|
||||
IIdentifierNode = interface;
|
||||
IConstantNode = interface;
|
||||
IBinaryExpressionNode = interface;
|
||||
@@ -54,12 +53,12 @@ type
|
||||
type
|
||||
IClosure = interface
|
||||
{$region 'private'}
|
||||
function GetBody: IExpressionNode;
|
||||
function GetBody: IAstNode;
|
||||
function GetClosureScope: IExecutionScope;
|
||||
function GetParameters: TArray<IIdentifierNode>;
|
||||
function GetUpvalues: TArray<IValueCell>;
|
||||
{$endregion}
|
||||
property Body: IExpressionNode read GetBody;
|
||||
property Body: IAstNode read GetBody;
|
||||
property ClosureScope: IExecutionScope read GetClosureScope;
|
||||
property Parameters: TArray<IIdentifierNode> read GetParameters;
|
||||
property Upvalues: TArray<IValueCell> read GetUpvalues;
|
||||
@@ -170,17 +169,14 @@ type
|
||||
function Accept(const Visitor: IAstVisitor): TAstValue;
|
||||
end;
|
||||
|
||||
IExpressionNode = interface(IAstNode)
|
||||
end;
|
||||
|
||||
IConstantNode = interface(IExpressionNode)
|
||||
IConstantNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetValue: TScalar;
|
||||
{$endregion}
|
||||
property Value: TScalar read GetValue;
|
||||
end;
|
||||
|
||||
IIdentifierNode = interface(IExpressionNode)
|
||||
IIdentifierNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetIsResolved: Boolean;
|
||||
function GetAddress: TResolvedAddress;
|
||||
@@ -191,119 +187,119 @@ type
|
||||
property Address: TResolvedAddress read GetAddress;
|
||||
end;
|
||||
|
||||
IBinaryExpressionNode = interface(IExpressionNode)
|
||||
IBinaryExpressionNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetLeft: IExpressionNode;
|
||||
function GetLeft: IAstNode;
|
||||
function GetOperator: TBinaryOperator;
|
||||
function GetRight: IExpressionNode;
|
||||
function GetRight: IAstNode;
|
||||
{$endregion}
|
||||
property Left: IExpressionNode read GetLeft;
|
||||
property Left: IAstNode read GetLeft;
|
||||
property Operator: TBinaryOperator read GetOperator;
|
||||
property Right: IExpressionNode read GetRight;
|
||||
property Right: IAstNode read GetRight;
|
||||
end;
|
||||
|
||||
IUnaryExpressionNode = interface(IExpressionNode)
|
||||
IUnaryExpressionNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetOperator: TUnaryOperator;
|
||||
function GetRight: IExpressionNode;
|
||||
function GetRight: IAstNode;
|
||||
{$endregion}
|
||||
property Operator: TUnaryOperator read GetOperator;
|
||||
property Right: IExpressionNode read GetRight;
|
||||
property Right: IAstNode read GetRight;
|
||||
end;
|
||||
|
||||
// Represents an if-statement for control flow.
|
||||
IIfExpressionNode = interface(IExpressionNode)
|
||||
IIfExpressionNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetCondition: IExpressionNode;
|
||||
function GetThenBranch: IExpressionNode;
|
||||
function GetElseBranch: IExpressionNode;
|
||||
function GetCondition: IAstNode;
|
||||
function GetThenBranch: IAstNode;
|
||||
function GetElseBranch: IAstNode;
|
||||
{$endregion}
|
||||
property Condition: IExpressionNode read GetCondition;
|
||||
property ThenBranch: IExpressionNode read GetThenBranch;
|
||||
property ElseBranch: IExpressionNode read GetElseBranch;
|
||||
property Condition: IAstNode read GetCondition;
|
||||
property ThenBranch: IAstNode read GetThenBranch;
|
||||
property ElseBranch: IAstNode read GetElseBranch;
|
||||
end;
|
||||
|
||||
// Represents a ternary expression (e.g., condition ? true_expr : false_expr) for value selection.
|
||||
ITernaryExpressionNode = interface(IExpressionNode)
|
||||
ITernaryExpressionNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetCondition: IExpressionNode;
|
||||
function GetThenBranch: IExpressionNode;
|
||||
function GetElseBranch: IExpressionNode;
|
||||
function GetCondition: IAstNode;
|
||||
function GetThenBranch: IAstNode;
|
||||
function GetElseBranch: IAstNode;
|
||||
{$endregion}
|
||||
property Condition: IExpressionNode read GetCondition;
|
||||
property ThenBranch: IExpressionNode read GetThenBranch;
|
||||
property ElseBranch: IExpressionNode read GetElseBranch;
|
||||
property Condition: IAstNode read GetCondition;
|
||||
property ThenBranch: IAstNode read GetThenBranch;
|
||||
property ElseBranch: IAstNode read GetElseBranch;
|
||||
end;
|
||||
|
||||
ILambdaExpressionNode = interface(IExpressionNode)
|
||||
ILambdaExpressionNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetParameters: TArray<IIdentifierNode>;
|
||||
function GetBody: IExpressionNode;
|
||||
function GetBody: IAstNode;
|
||||
function GetScopeDescriptor: IScopeDescriptor;
|
||||
function GetUpvalues: TArray<TResolvedAddress>;
|
||||
{$endregion}
|
||||
property Parameters: TArray<IIdentifierNode> read GetParameters;
|
||||
property Body: IExpressionNode read GetBody;
|
||||
property Body: IAstNode read GetBody;
|
||||
property ScopeDescriptor: IScopeDescriptor read GetScopeDescriptor;
|
||||
property Upvalues: TArray<TResolvedAddress> read GetUpvalues;
|
||||
end;
|
||||
|
||||
IFunctionCallNode = interface(IExpressionNode)
|
||||
IFunctionCallNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetCallee: IExpressionNode;
|
||||
function GetArguments: TList<IExpressionNode>;
|
||||
function GetCallee: IAstNode;
|
||||
function GetArguments: TList<IAstNode>;
|
||||
{$endregion}
|
||||
property Callee: IExpressionNode read GetCallee;
|
||||
property Arguments: TList<IExpressionNode> read GetArguments;
|
||||
property Callee: IAstNode read GetCallee;
|
||||
property Arguments: TList<IAstNode> read GetArguments;
|
||||
end;
|
||||
|
||||
IBlockExpressionNode = interface(IExpressionNode)
|
||||
IBlockExpressionNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetExpressions: TList<IExpressionNode>;
|
||||
function GetExpressions: TList<IAstNode>;
|
||||
{$endregion}
|
||||
property Expressions: TList<IExpressionNode> read GetExpressions;
|
||||
property Expressions: TList<IAstNode> read GetExpressions;
|
||||
end;
|
||||
|
||||
IVariableDeclarationNode = interface(IExpressionNode)
|
||||
IVariableDeclarationNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetIdentifier: IIdentifierNode;
|
||||
function GetInitializer: IExpressionNode;
|
||||
function GetInitializer: IAstNode;
|
||||
{$endregion}
|
||||
property Identifier: IIdentifierNode read GetIdentifier;
|
||||
property Initializer: IExpressionNode read GetInitializer;
|
||||
property Initializer: IAstNode read GetInitializer;
|
||||
end;
|
||||
|
||||
IAssignmentNode = interface(IExpressionNode)
|
||||
IAssignmentNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetIdentifier: IIdentifierNode;
|
||||
function GetValue: IExpressionNode;
|
||||
function GetValue: IAstNode;
|
||||
{$endregion}
|
||||
property Identifier: IIdentifierNode read GetIdentifier;
|
||||
property Value: IExpressionNode read GetValue;
|
||||
property Value: IAstNode read GetValue;
|
||||
end;
|
||||
|
||||
// Represents an index access expression (e.g., series[index]).
|
||||
IIndexerNode = interface(IExpressionNode)
|
||||
IIndexerNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetBase: IExpressionNode;
|
||||
function GetIndex: IExpressionNode;
|
||||
function GetBase: IAstNode;
|
||||
function GetIndex: IAstNode;
|
||||
{$endregion}
|
||||
property Base: IExpressionNode read GetBase;
|
||||
property Index: IExpressionNode read GetIndex;
|
||||
property Base: IAstNode read GetBase;
|
||||
property Index: IAstNode read GetIndex;
|
||||
end;
|
||||
|
||||
// Represents a member access expression (e.g., series.field or record.field).
|
||||
IMemberAccessNode = interface(IExpressionNode)
|
||||
IMemberAccessNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetBase: IExpressionNode;
|
||||
function GetBase: IAstNode;
|
||||
function GetMember: IIdentifierNode;
|
||||
{$endregion}
|
||||
property Base: IExpressionNode read GetBase;
|
||||
property Base: IAstNode read GetBase;
|
||||
property Member: IIdentifierNode read GetMember;
|
||||
end;
|
||||
|
||||
// Represents creating a new, empty series (e.g., new series(int)).
|
||||
ICreateSeriesNode = interface(IExpressionNode)
|
||||
ICreateSeriesNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetDefinition: String;
|
||||
{$endregion}
|
||||
@@ -311,18 +307,18 @@ type
|
||||
end;
|
||||
|
||||
// Represents adding a value to a series (e.g., my_series.add(value, 100)).
|
||||
IAddSeriesItemNode = interface(IExpressionNode)
|
||||
IAddSeriesItemNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetSeries: IIdentifierNode;
|
||||
function GetValue: IExpressionNode;
|
||||
function GetLookback: IExpressionNode;
|
||||
function GetValue: IAstNode;
|
||||
function GetLookback: IAstNode;
|
||||
{$endregion}
|
||||
property Series: IIdentifierNode read GetSeries;
|
||||
property Value: IExpressionNode read GetValue;
|
||||
property Lookback: IExpressionNode read GetLookback;
|
||||
property Value: IAstNode read GetValue;
|
||||
property Lookback: IAstNode read GetLookback;
|
||||
end;
|
||||
|
||||
ISeriesLengthNode = interface(IExpressionNode)
|
||||
ISeriesLengthNode = interface(IAstNode)
|
||||
{$region 'private'}
|
||||
function GetSeries: IIdentifierNode;
|
||||
{$endregion}
|
||||
|
||||
Reference in New Issue
Block a user