diff --git a/Src/AST/Myc.Ast.Environment.pas b/Src/AST/Myc.Ast.Environment.pas index c87e39c..cb90125 100644 --- a/Src/AST/Myc.Ast.Environment.pas +++ b/Src/AST/Myc.Ast.Environment.pas @@ -39,24 +39,15 @@ type procedure SetExecutionStrategy(const AStrategy: IExecutionStrategy); function ExpandMacros(const Node: IAstNode): IAstNode; - - // Updated: Returns Layout, not Descriptor. Performs Binding AND TypeChecking. function Bind(const Node: IAstNode; out Layout: IScopeLayout; const AArgTypes: TArray = []): IAstNode; - - // Updated: Removed Descriptor parameter. function Specialize(const Node: IAstNode): IAstNode; - function Compile( - const ANode: IAstNode; - const Params: TArray = []; - const AArgTypes: TArray = [] - ): TCompiledFunction; overload; - - function Compile(const Node: IFunctionDefinition; const ArgTypes: TArray = []): TCompiledFunction; overload; + function Compile(const Node: IFunctionDefinition; const ArgTypes: TArray = []): TCompiledFunction; function CreateEnvironment: IEnvironment; property RootScope: IExecutionScope read GetRootScope; + property MacroRegistry: IMacroRegistry read GetMacroRegistry; property MonomorphCache: IMonomorphCache read GetMonomorphCache; property FunctionRegistry: IFunctionDefinitionRegistry read GetFunctionRegistry; @@ -174,11 +165,6 @@ type function Bind(const Node: IAstNode; out Layout: IScopeLayout; const ArgTypes: TArray): IAstNode; function Specialize(const Node: IAstNode): IAstNode; - function Compile( - const Node: IAstNode; - const Params: TArray; - const ArgTypes: TArray - ): TCompiledFunction; overload; function Compile(const Node: IFunctionDefinition; const ArgTypes: TArray): TCompiledFunction; overload; end; @@ -215,7 +201,7 @@ function TAstEnvironment.Compile( const ArgTypes: TArray = [] ): TCompiledFunction; begin - Result := FEnvironment.Compile(Node, Params, ArgTypes); + Result := FEnvironment.Compile(TAst.LambdaExpr(Params, Node), ArgTypes); end; function TAstEnvironment.Compile(const Node: IFunctionDefinition; const ArgTypes: TArray = []): TCompiledFunction; @@ -361,16 +347,6 @@ begin Result := TEnvironment.Create(TAst.CreateScope(FRootScope), TMacroRegistry.Create(FMacroRegistry), FExecutionStrategy); end; -function TEnvironment.Compile( - const Node: IAstNode; - const Params: TArray; - const ArgTypes: TArray -): TCompiledFunction; -begin - // Wrap in Lambda to create an isolatable compilation unit (scope) - Result := Compile(TAst.LambdaExpr(Params, Node).AsLambdaExpression, ArgTypes); -end; - function TEnvironment.Compile(const Node: IFunctionDefinition; const ArgTypes: TArray): TCompiledFunction; var layout: IScopeLayout;