From 13d8a21de72a03c4a25724c0df35ad48896dbce1 Mon Sep 17 00:00:00 2001 From: Michael Schimmel Date: Fri, 2 Jan 2026 13:54:27 +0100 Subject: [PATCH] Generic Visitors --- ASTPlayground/ASTPlayground.delphilsp.json | 2 +- Src/AST/Myc.Ast.Nodes.pas | 270 +++------------------ Src/AST/Myc.Ast.Visitor.pas | 198 --------------- 3 files changed, 39 insertions(+), 431 deletions(-) diff --git a/ASTPlayground/ASTPlayground.delphilsp.json b/ASTPlayground/ASTPlayground.delphilsp.json index 713723a..78d1f1f 100644 --- a/ASTPlayground/ASTPlayground.delphilsp.json +++ b/ASTPlayground/ASTPlayground.delphilsp.json @@ -1 +1 @@ -{ "settings": { "project": "file:///T%3A/Myc/ASTPlayground/ASTPlayground.dpr", "dllname": "dcc64370.dll", "dccOptions": "-$O- -$W+ --inline:off -$R+ -$Q+ --no-config -Q -TX.exe -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG;;FRAMEWORK_FMX -E.\\Win64\\Debug -I\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\\DE\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\\DE\";T:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -LEC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Bpl\\Win64 -LNC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64 -NU.\\Win64\\Debug -NSWinapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;System;Xml;Data;Datasnap;Web;Soap; -OT:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -R\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\\DE\";T:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -U\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\\DE\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\\DE\";T:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -V -VN -VR -NBC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64 -NHC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\hpp\\Win64 -NO.\\Win64\\Debug -LU" , "projectFiles":[ { "name": "MainForm", "file": "file:///T%3A/Myc/ASTPlayground/MainForm.pas" }, { "name": "Myc.Ast.Nodes", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Nodes.pas" }, { "name": "Myc.Ast.Scope", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Scope.pas" }, { "name": "Myc.Data.Value", "file": "file:///T%3A/Myc/ASTPlayground/Myc.Data.Value.pas" }, { "name": "Myc.Ast.Visitor", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Visitor.pas" }, { "name": "Myc.Ast.RTL", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.RTL.pas" }, { "name": "Myc.Ast.Dumper", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Dumper.pas" }, { "name": "Myc.Ast.RTL.Core", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.RTL.Core.pas" }, { "name": "Myc.Utils", "file": "file:///T%3A/Myc/Src/Myc.Utils.pas" }, { "name": "Myc.Ast.Script", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Script.pas" }, { "name": "Myc.Ast.Types", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Types.pas" }, { "name": "Myc.Data.Keyword", "file": "file:///T%3A/Myc/Src/Data/Myc.Data.Keyword.pas" }, { "name": "Myc.Ast.Compiler.TCO", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.TCO.pas" }, { "name": "Myc.Ast.Compiler.Binder", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Binder.pas" }, { "name": "Myc.Ast.Compiler.Lowering", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Lowering.pas" }, { "name": "Myc.Ast.Compiler.TypeChecker", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.TypeChecker.pas" }, { "name": "Myc.Ast.Compiler.Macros", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Macros.pas" }, { "name": "Myc.Ast.Compiler.Specializer", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Specializer.pas" }, { "name": "Myc.Ast.Environment", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Environment.pas" }, { "name": "Myc.Ast.Debugger", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Debugger.pas" }, { "name": "Myc.Ast.Analysis.Purity", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Analysis.Purity.pas" }, { "name": "Myc.Ast.Identities", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Identities.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.pas" }, { "name": "Myc.Fmx.AstEditor.Visualizer", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Visualizer.pas" }, { "name": "Myc.Fmx.AstEditor.Workspace", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Workspace.pas" }, { "name": "Myc.Fmx.AstEditor.Layout", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Layout.pas" }, { "name": "Myc.Fmx.AstEditor.Node", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Node.pas" }, { "name": "Myc.Ast.Refactoring.Remove", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Refactoring.Remove.pas" }, { "name": "Myc.Fmx.AstEditor.Render", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Render.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Lists", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Lists.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Primitives", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Primitives.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Control", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Control.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Data", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Data.pas" }, { "name": "Myc.Ast.RTL.TypeRegistry", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.RTL.TypeRegistry.pas" }, { "name": "Myc.Trade.Broker", "file": "file:///T%3A/Myc/Src/Myc.Trade.Broker.pas" }, { "name": "Myc.Data.Stream.Pipes", "file": "file:///T%3A/Myc/Src/Data/Myc.Data.Stream.Pipes.pas" }, { "name": "Myc.Data.Stream", "file": "file:///T%3A/Myc/Src/Data/Myc.Data.Stream.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Pipes", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Pipes.pas" }, { "name": "Demo.Finance", "file": "file:///T%3A/Myc/Test/Demo.Finance.pas" } ] , "includeDCUsInUsesCompletion": true, "enableKeyWordCompletion": false, "browsingPaths": [ "file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/OCX/Servers","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/VCL","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/RTL/SYS","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/win","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/win/winrt","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/ToolsAPI","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/IBX","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Internet","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/PROPERTY%20EDITORS","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/soap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/XML","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Indy10/Core","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Indy10/System","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Indy10/Protocols","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/fmx","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/databinding/components","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/databinding/engine","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/databinding/graph","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/ado","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/cloud","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/datasnap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/dbx","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/dsnap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/vclctrls","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/datasnap/connectors","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/datasnap/proxygen","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DataExplorer","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/Common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/Common/dunit","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/Common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/dunit","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/src","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/tests","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Experts","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/indy/abstraction","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/indy/implementation","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/indyimpl","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Property%20Editors/Indy10","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/soap/wsdlimporter","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Visualizers","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/XMLReporting","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/XPGen","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/rest","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/firedac","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/tethering","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnitX","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/ems","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/net","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/FlatBox2D","file:///C%3A/Users/Public/Documents/Embarcadero/Studio/37.0/Dcp/%25PLATFORM%25","file:///%25TP%25/runtime/vcl","file:///S%3A/sc_famos_src/svn_vcl/cpxedits","file:///S%3A/sc_famos_src/svn_vcl/dzChart","file:///S%3A/sc_famos_src/svn_vcl/eaeditor","file:///S%3A/sc_famos_src/svn_vcl/FamosEvents","file:///S%3A/sc_famos_src/svn_vcl/HTML_Viewer/source","file:///S%3A/sc_famos_src/svn_vcl/Myc_ChartEdit","file:///S%3A/sc_famos_src/svn_vcl/Myc_HemiDrag","file:///S%3A/sc_famos_src/svn_vcl/Myc_SplitControl","file:///S%3A/sc_famos_src/svn_vcl/NiceChart","file:///S%3A/sc_famos_src/svn_vcl/plotter","file:///S%3A/sc_famos_src/svn_vcl/SimpleIPC","file:///S%3A/sc_famos_src/svn_vcl/SynEdit-master/Source","file:///S%3A/sc_famos_src/svn_vcl/ValEdits","file:///S%3A/sc_famos_src/svn_vcl/ZipMaster","file:///S%3A/sc_famos_src/svn_vcl/ZipMaster/zlib","file:///S%3A/sc_famos_src/svn_vcl/ZipMaster/zlib/win32","file:///S%3A/sc_famos_src/svn_vcl/Virtual-TreeView/Source","file:///S%3A/sc_famos_src/svn_common/caHelpSys","file:///S%3A/sc_famos_src/svn_common/Misc","file:///S%3A/sc_famos_src/svn_common/Myc_VecMath","file:///S%3A/sc_famos_src/svn_common/PascalScript/source","file:///S%3A/sc_famos_src/svn_common/TreeBase","file:///S%3A/sc_famos_src/svn_common/TreeBase/Medien","file:///S%3A/3rdParty/spring4d/Source","file:///S%3A/3rdParty/spring4d/Source/Base","file:///S%3A/3rdParty/spring4d/Source/Base/Collections","file:///S%3A/3rdParty/spring4d/Source/Base/Logging","file:///S%3A/3rdParty/spring4d/Source/Base/Patches","file:///S%3A/3rdParty/spring4d/Source/Core/Container","file:///S%3A/3rdParty/spring4d/Source/Core/Interception","file:///S%3A/3rdParty/spring4d/Source/Core/Logging","file:///S%3A/3rdParty/spring4d/Source/Core/Mocking","file:///S%3A/3rdParty/spring4d/Source/Core/Services","file:///S%3A/3rdParty/spring4d/Source/Extensions/Cryptography","file:///S%3A/3rdParty/spring4d/Source/Extensions/Utils","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressCore%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressCommon%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressGDI%2B%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressLibrary/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/XP%20Theme%20Manager/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressLayout%20Control/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressPageControl/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressEditors%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressDocking%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressBars/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressOfficeCore%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressMemData/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressDataController/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressNavBar/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressSkins%20Library/Sources","file:///T%3A/Myc/Src","file:///T%3A/Myc/Src/Data","file:///T%3A/Myc/Src/AST" ] , "CommonAppData": "file:///C%3A/Users/Brummel/AppData/Roaming/Embarcadero/BDS/37.0/" , "Templates": "file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/ObjRepos/" } } \ No newline at end of file +{ "settings": { "project": "file:///T%3A/Myc/ASTPlayground/ASTPlayground.dpr", "dllname": "dcc64370.dll", "dccOptions": "-$O- -$W+ --inline:off -$R+ -$Q+ --no-config -Q -TX.exe -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG;;FRAMEWORK_FMX -E.\\Win64\\Debug -I\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\\DE\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\\DE\";T:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -LEC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Bpl\\Win64 -LNC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64 -NU.\\Win64\\Debug -NSWinapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;System;Xml;Data;Datasnap;Web;Soap; -OT:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -R\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\\DE\";T:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -U\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\\DE\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\debug\";\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\\DE\";T:\\Myc\\Src\\Data;T:\\Myc\\Src\\AST;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\lib\\Win64\\release\";C:\\Users\\Brummel\\Documents\\Embarcadero\\Studio\\37.0\\Imports\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\include\";S:\\sc_famos_src\\svn_vcl\\Virtual-TreeView\\Source;S:\\sc_famos_src\\svn_vcl\\cpxedits;S:\\sc_famos_src\\svn_vcl\\dzChart;S:\\sc_famos_src\\svn_vcl\\eaeditor;S:\\sc_famos_src\\svn_vcl\\FamosEvents;S:\\sc_famos_src\\svn_vcl\\HTML_Viewer\\source;S:\\sc_famos_src\\svn_vcl\\Myc_ChartEdit;S:\\sc_famos_src\\svn_vcl\\Myc_HemiDrag;S:\\sc_famos_src\\svn_vcl\\Myc_SplitControl;S:\\sc_famos_src\\svn_vcl\\plotter;S:\\sc_famos_src\\svn_vcl\\SimpleIPC;S:\\sc_famos_src\\svn_vcl\\SynEdit-master\\Source;S:\\sc_famos_src\\svn_vcl\\ValEdits;S:\\sc_famos_src\\svn_vcl\\ZipMaster;S:\\sc_famos_src\\svn_common\\Myc_VecMath;\"C:\\Program Files (x86)\\DevExpress VCL\\Library\\RS28\\Win64\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressCommon Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressGDI+ Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLibrary\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\XP Theme Manager\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressLayout Control\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressPageControl\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressEditors Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDocking Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressBars\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressOfficeCore Library\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressMemData\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressDataController\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressNavBar\\Sources\";\"C:\\Program Files (x86)\\DevExpress VCL\\ExpressSkins Library\\Sources\";S:\\3rdParty\\FastMM5;C:\\Users\\Brummel\\AppData\\Local\\Programs\\TestInsight\\Source;T:\\Myc\\Src;\"c:\\program files (x86)\\embarcadero\\studio\\37.0\\source\\DUnitX\" -V -VN -VR -NBC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\Dcp\\Win64 -NHC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\37.0\\hpp\\Win64 -NO.\\Win64\\Debug -LU" , "projectFiles":[ { "name": "MainForm", "file": "file:///T%3A/Myc/ASTPlayground/MainForm.pas" }, { "name": "Myc.Ast.Nodes", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Nodes.pas" }, { "name": "Myc.Ast.Scope", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Scope.pas" }, { "name": "Myc.Data.Value", "file": "file:///T%3A/Myc/ASTPlayground/Myc.Data.Value.pas" }, { "name": "Myc.Ast.Visitor", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Visitor.pas" }, { "name": "Myc.Ast.RTL", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.RTL.pas" }, { "name": "Myc.Ast.Dumper", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Dumper.pas" }, { "name": "Myc.Ast.RTL.Core", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.RTL.Core.pas" }, { "name": "Myc.Utils", "file": "file:///T%3A/Myc/Src/Myc.Utils.pas" }, { "name": "Myc.Ast.Script", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Script.pas" }, { "name": "Myc.Ast.Types", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Types.pas" }, { "name": "Myc.Data.Keyword", "file": "file:///T%3A/Myc/Src/Data/Myc.Data.Keyword.pas" }, { "name": "Myc.Ast.Compiler.TCO", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.TCO.pas" }, { "name": "Myc.Ast.Compiler.Binder", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Binder.pas" }, { "name": "Myc.Ast.Compiler.Lowering", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Lowering.pas" }, { "name": "Myc.Ast.Compiler.TypeChecker", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.TypeChecker.pas" }, { "name": "Myc.Ast.Compiler.Macros", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Macros.pas" }, { "name": "Myc.Ast.Compiler.Specializer", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Compiler.Specializer.pas" }, { "name": "Myc.Ast.Environment", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Environment.pas" }, { "name": "Myc.Ast.Debugger", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Debugger.pas" }, { "name": "Myc.Ast.Analysis.Purity", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Analysis.Purity.pas" }, { "name": "Myc.Ast.Identities", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Identities.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.pas" }, { "name": "Myc.Fmx.AstEditor.Visualizer", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Visualizer.pas" }, { "name": "Myc.Fmx.AstEditor.Workspace", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Workspace.pas" }, { "name": "Myc.Fmx.AstEditor.Layout", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Layout.pas" }, { "name": "Myc.Fmx.AstEditor.Node", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Node.pas" }, { "name": "Myc.Ast.Refactoring.Remove", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.Refactoring.Remove.pas" }, { "name": "Myc.Fmx.AstEditor.Render", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Render.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Lists", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Lists.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Primitives", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Primitives.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Control", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Control.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Data", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Data.pas" }, { "name": "Myc.Ast.RTL.TypeRegistry", "file": "file:///T%3A/Myc/Src/AST/Myc.Ast.RTL.TypeRegistry.pas" }, { "name": "Myc.Trade.Broker", "file": "file:///T%3A/Myc/Src/Myc.Trade.Broker.pas" }, { "name": "Myc.Data.Stream.Pipes", "file": "file:///T%3A/Myc/Src/Data/Myc.Data.Stream.Pipes.pas" }, { "name": "Myc.Data.Stream", "file": "file:///T%3A/Myc/Src/Data/Myc.Data.Stream.pas" }, { "name": "Myc.Fmx.AstEditor.Handlers.Pipes", "file": "file:///T%3A/Myc/Src/AST/Myc.Fmx.AstEditor.Handlers.Pipes.pas" }, { "name": "Demo.Finance", "file": "file:///T%3A/Myc/Test/Demo.Finance.pas" } ] , "includeDCUsInUsesCompletion": true, "enableKeyWordCompletion": true, "browsingPaths": [ "file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/OCX/Servers","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/VCL","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/RTL/SYS","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/win","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/win/winrt","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/ToolsAPI","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/IBX","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Internet","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/PROPERTY%20EDITORS","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/soap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/SOURCE/XML","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Indy10/Core","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Indy10/System","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Indy10/Protocols","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/fmx","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/databinding/components","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/databinding/engine","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/databinding/graph","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/ado","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/cloud","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/datasnap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/dbx","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/dsnap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/vclctrls","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/datasnap/connectors","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/datasnap/proxygen","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DataExplorer","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/Common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/Common/dunit","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/Common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/dunit","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/src","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/tests","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Experts","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/indy/abstraction","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/indy/implementation","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/indyimpl","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Property%20Editors/Indy10","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/soap/wsdlimporter","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/Visualizers","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/XMLReporting","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnit/Contrib/XPGen","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/rest","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/firedac","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/tethering","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/DUnitX","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/data/ems","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/rtl/net","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/source/FlatBox2D","file:///C%3A/Users/Public/Documents/Embarcadero/Studio/37.0/Dcp/%25PLATFORM%25","file:///%25TP%25/runtime/vcl","file:///S%3A/sc_famos_src/svn_vcl/cpxedits","file:///S%3A/sc_famos_src/svn_vcl/dzChart","file:///S%3A/sc_famos_src/svn_vcl/eaeditor","file:///S%3A/sc_famos_src/svn_vcl/FamosEvents","file:///S%3A/sc_famos_src/svn_vcl/HTML_Viewer/source","file:///S%3A/sc_famos_src/svn_vcl/Myc_ChartEdit","file:///S%3A/sc_famos_src/svn_vcl/Myc_HemiDrag","file:///S%3A/sc_famos_src/svn_vcl/Myc_SplitControl","file:///S%3A/sc_famos_src/svn_vcl/NiceChart","file:///S%3A/sc_famos_src/svn_vcl/plotter","file:///S%3A/sc_famos_src/svn_vcl/SimpleIPC","file:///S%3A/sc_famos_src/svn_vcl/SynEdit-master/Source","file:///S%3A/sc_famos_src/svn_vcl/ValEdits","file:///S%3A/sc_famos_src/svn_vcl/ZipMaster","file:///S%3A/sc_famos_src/svn_vcl/ZipMaster/zlib","file:///S%3A/sc_famos_src/svn_vcl/ZipMaster/zlib/win32","file:///S%3A/sc_famos_src/svn_vcl/Virtual-TreeView/Source","file:///S%3A/sc_famos_src/svn_common/caHelpSys","file:///S%3A/sc_famos_src/svn_common/Misc","file:///S%3A/sc_famos_src/svn_common/Myc_VecMath","file:///S%3A/sc_famos_src/svn_common/PascalScript/source","file:///S%3A/sc_famos_src/svn_common/TreeBase","file:///S%3A/sc_famos_src/svn_common/TreeBase/Medien","file:///S%3A/3rdParty/spring4d/Source","file:///S%3A/3rdParty/spring4d/Source/Base","file:///S%3A/3rdParty/spring4d/Source/Base/Collections","file:///S%3A/3rdParty/spring4d/Source/Base/Logging","file:///S%3A/3rdParty/spring4d/Source/Base/Patches","file:///S%3A/3rdParty/spring4d/Source/Core/Container","file:///S%3A/3rdParty/spring4d/Source/Core/Interception","file:///S%3A/3rdParty/spring4d/Source/Core/Logging","file:///S%3A/3rdParty/spring4d/Source/Core/Mocking","file:///S%3A/3rdParty/spring4d/Source/Core/Services","file:///S%3A/3rdParty/spring4d/Source/Extensions/Cryptography","file:///S%3A/3rdParty/spring4d/Source/Extensions/Utils","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressCore%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressCommon%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressGDI%2B%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressLibrary/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/XP%20Theme%20Manager/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressLayout%20Control/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressPageControl/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressEditors%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressDocking%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressBars/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressOfficeCore%20Library/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressMemData/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressDataController/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressNavBar/Sources","file:///C%3A/Program%20Files%20%28x86%29/DevExpress%20VCL/ExpressSkins%20Library/Sources","file:///T%3A/Myc/Src","file:///T%3A/Myc/Src/Data","file:///T%3A/Myc/Src/AST" ] , "CommonAppData": "file:///C%3A/Users/Brummel/AppData/Roaming/Embarcadero/BDS/37.0/" , "Templates": "file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/37.0/ObjRepos/" } } \ No newline at end of file diff --git a/Src/AST/Myc.Ast.Nodes.pas b/Src/AST/Myc.Ast.Nodes.pas index 7a5294c..3d27c5c 100644 --- a/Src/AST/Myc.Ast.Nodes.pas +++ b/Src/AST/Myc.Ast.Nodes.pas @@ -515,45 +515,6 @@ type IAstVisitor = interface // --- Central Dispatch Method (New) --- 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; IEvaluatorVisitor = interface(IAstVisitor) @@ -571,7 +532,8 @@ type function GetIsTyped: Boolean; virtual; public 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 AsIdentifier: IIdentifierNode; virtual; @@ -661,7 +623,6 @@ type protected function GetKind: TAstNodeKind; override; public - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsParameterList: IParameterList; override; end; @@ -669,7 +630,6 @@ type protected function GetKind: TAstNodeKind; override; public - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsArgumentList: IArgumentList; override; end; @@ -677,7 +637,6 @@ type protected function GetKind: TAstNodeKind; override; public - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsExpressionList: IExpressionList; override; end; @@ -691,7 +650,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AKey: IKeywordNode; const AValue: IAstNode; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsRecordField: IRecordFieldNode; override; end; @@ -699,7 +657,6 @@ type protected function GetKind: TAstNodeKind; override; public - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsRecordFieldList: IRecordFieldList; override; end; @@ -713,7 +670,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AIdentity: IConstantIdentity; const AStaticType: IStaticType); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsConstant: IConstantNode; override; end; @@ -727,7 +683,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AIdentity: INamedIdentity; const AAddress: TResolvedAddress; const AStaticType: IStaticType); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsIdentifier: IIdentifierNode; override; end; @@ -739,7 +694,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AIdentity: IKeywordIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsKeyword: IKeywordNode; override; end; @@ -751,7 +705,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AIdentity: IDefinitionIdentity; const AStaticType: IStaticType); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsCreateSeries: ICreateSeriesNode; override; end; @@ -771,7 +724,6 @@ type const AStaticType: IStaticType; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsIfExpression: IIfExpressionNode; override; end; @@ -790,7 +742,6 @@ type const AStaticType: IStaticType; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsCondExpression: ICondExpressionNode; override; end; @@ -822,7 +773,6 @@ type const AHasNestedLambdas, AIsPure: Boolean; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsLambdaExpression: ILambdaExpressionNode; override; end; @@ -850,7 +800,6 @@ type const AIsTargetPure: Boolean; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsFunctionCall: IFunctionCallNode; override; end; @@ -871,7 +820,6 @@ type const ABody: IAstNode; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsMacroDefinition: IMacroDefinitionNode; override; end; @@ -885,7 +833,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const ACallNode: IFunctionCallNode; const AExpandedBody: IAstNode; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsMacroExpansion: IMacroExpansionNode; override; end; @@ -897,7 +844,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AExpression: IAstNode; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsQuasiquote: IQuasiquoteNode; override; end; @@ -909,7 +855,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AExpression: IAstNode; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsUnquote: IUnquoteNode; override; end; @@ -921,7 +866,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AExpression: IQuasiquoteNode; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsUnquoteSplicing: IUnquoteSplicingNode; override; end; @@ -933,7 +877,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AArguments: IArgumentList; const AStaticType: IStaticType; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsRecur: IRecurNode; override; end; @@ -945,7 +888,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AExpressions: IExpressionList; const AStaticType: IStaticType; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsBlockExpression: IBlockExpressionNode; override; end; @@ -966,7 +908,6 @@ type const AIsBoxed: Boolean; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsVariableDeclaration: IVariableDeclarationNode; override; end; @@ -979,7 +920,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const ATarget, AValue: IAstNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsAssignment: IAssignmentNode; override; end; @@ -992,7 +932,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const ABase, AIndex: IAstNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsIndexer: IIndexerNode; override; end; @@ -1011,7 +950,6 @@ type const AStaticType: IStaticType; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsMemberAccess: IMemberAccessNode; override; end; @@ -1033,7 +971,6 @@ type const AStaticType: IStaticType; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsRecordLiteral: IRecordLiteralNode; override; end; @@ -1053,7 +990,6 @@ type const AStaticType: IStaticType; const AIdentity: IAstIdentity ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsAddSeriesItem: IAddSeriesItemNode; override; end; @@ -1065,7 +1001,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const ASeries: IIdentifierNode; const AStaticType: IStaticType; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsSeriesLength: ISeriesLengthNode; override; end; @@ -1074,7 +1009,6 @@ type function GetKind: TAstNodeKind; override; public constructor Create(const AStaticType: IStaticType; const AIdentity: IAstIdentity); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsNop: INopNode; override; end; @@ -1082,7 +1016,6 @@ type protected function GetKind: TAstNodeKind; override; public - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsPipeSelectorList: IPipeSelectorList; override; end; @@ -1101,7 +1034,6 @@ type const AIdentity: IAstIdentity; const AStaticType: IStaticType ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsPipeInput: IPipeInputNode; override; end; @@ -1109,7 +1041,6 @@ type protected function GetKind: TAstNodeKind; override; public - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsPipeInputList: IPipeInputList; override; end; @@ -1128,7 +1059,6 @@ type const AIdentity: IAstIdentity; const AStaticType: IStaticType ); - function Accept(const Visitor: IAstVisitor): TDataValue; override; function AsPipe: IPipeNode; override; end; @@ -1303,15 +1233,24 @@ begin Result := False; 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) function TAstNode.AsConstant: IConstantNode; begin Result := nil; end; + function TAstNode.AsIdentifier: IIdentifierNode; begin Result := nil; end; + function TAstNode.AsKeyword: IKeywordNode; begin Result := nil; @@ -1321,18 +1260,22 @@ function TAstNode.AsParameterList: IParameterList; begin Result := nil; end; + function TAstNode.AsArgumentList: IArgumentList; begin Result := nil; end; + function TAstNode.AsExpressionList: IExpressionList; begin Result := nil; end; + function TAstNode.AsRecordFieldList: IRecordFieldList; begin Result := nil; end; + function TAstNode.AsRecordField: IRecordFieldNode; begin Result := nil; @@ -1342,82 +1285,102 @@ function TAstNode.AsIfExpression: IIfExpressionNode; begin Result := nil; end; + function TAstNode.AsCondExpression: ICondExpressionNode; begin Result := nil; end; + function TAstNode.AsLambdaExpression: ILambdaExpressionNode; begin Result := nil; end; + function TAstNode.AsFunctionCall: IFunctionCallNode; begin Result := nil; end; + function TAstNode.AsMacroExpansion: IMacroExpansionNode; begin Result := nil; end; + function TAstNode.AsBlockExpression: IBlockExpressionNode; begin Result := nil; end; + function TAstNode.AsVariableDeclaration: IVariableDeclarationNode; begin Result := nil; end; + function TAstNode.AsAssignment: IAssignmentNode; begin Result := nil; end; + function TAstNode.AsMacroDefinition: IMacroDefinitionNode; begin Result := nil; end; + function TAstNode.AsQuasiquote: IQuasiquoteNode; begin Result := nil; end; + function TAstNode.AsUnquote: IUnquoteNode; begin Result := nil; end; + function TAstNode.AsUnquoteSplicing: IUnquoteSplicingNode; begin Result := nil; end; + function TAstNode.AsIndexer: IIndexerNode; begin Result := nil; end; + function TAstNode.AsMemberAccess: IMemberAccessNode; begin Result := nil; end; + function TAstNode.AsRecordLiteral: IRecordLiteralNode; begin Result := nil; end; + function TAstNode.AsCreateSeries: ICreateSeriesNode; begin Result := nil; end; + function TAstNode.AsAddSeriesItem: IAddSeriesItemNode; begin Result := nil; end; + function TAstNode.AsSeriesLength: ISeriesLengthNode; begin Result := nil; end; + function TAstNode.AsRecur: IRecurNode; begin Result := nil; end; + function TAstNode.AsNop: INopNode; begin Result := nil; end; + function TAstNode.AsTypedNode: IAstTypedNode; begin Result := nil; @@ -1427,14 +1390,17 @@ function TAstNode.AsPipeInput: IPipeInputNode; begin Result := nil; end; + function TAstNode.AsPipeSelectorList: IPipeSelectorList; begin Result := nil; end; + function TAstNode.AsPipeInputList: IPipeInputList; begin Result := nil; end; + function TAstNode.AsPipe: IPipeNode; begin Result := nil; @@ -1493,11 +1459,6 @@ end; { TParameterList } -function TParameterList.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitParameterList(Self); -end; - function TParameterList.AsParameterList: IParameterList; begin Result := Self; @@ -1510,11 +1471,6 @@ end; { TArgumentList } -function TArgumentList.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitArgumentList(Self); -end; - function TArgumentList.AsArgumentList: IArgumentList; begin Result := Self; @@ -1527,11 +1483,6 @@ end; { TExpressionList } -function TExpressionList.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitExpressionList(Self); -end; - function TExpressionList.AsExpressionList: IExpressionList; begin Result := Self; @@ -1551,11 +1502,6 @@ begin FValue := AValue; end; -function TRecordFieldNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitRecordField(Self); -end; - function TRecordFieldNode.AsRecordField: IRecordFieldNode; begin Result := Self; @@ -1578,11 +1524,6 @@ end; { TRecordFieldList } -function TRecordFieldList.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitRecordFieldList(Self); -end; - function TRecordFieldList.AsRecordFieldList: IRecordFieldList; begin Result := Self; @@ -1601,11 +1542,6 @@ begin FConstIdentity := AIdentity; end; -function TConstantNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitConstant(Self); -end; - function TConstantNode.AsConstant: IConstantNode; begin Result := Self; @@ -1630,11 +1566,6 @@ begin FAddress := AAddress; end; -function TIdentifierNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitIdentifier(Self); -end; - function TIdentifierNode.AsIdentifier: IIdentifierNode; begin Result := Self; @@ -1663,11 +1594,6 @@ begin FKeywordIdentity := AIdentity; end; -function TKeywordNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitKeyword(Self); -end; - function TKeywordNode.AsKeyword: IKeywordNode; begin Result := Self; @@ -1691,11 +1617,6 @@ begin FDefIdentity := AIdentity; end; -function TCreateSeriesNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitCreateSeries(Self); -end; - function TCreateSeriesNode.AsCreateSeries: ICreateSeriesNode; begin Result := Self; @@ -1725,11 +1646,6 @@ begin FElseBranch := AElseBranch; end; -function TIfExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitIfExpression(Self); -end; - function TIfExpressionNode.AsIfExpression: IIfExpressionNode; begin Result := Self; @@ -1766,11 +1682,6 @@ begin FElseBranch := AElseBranch; end; -function TCondExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitCondExpression(Self); -end; - function TCondExpressionNode.AsCondExpression: ICondExpressionNode; begin Result := Self; @@ -1814,11 +1725,6 @@ begin FIsPure := AIsPure; end; -function TLambdaExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitLambdaExpression(Self); -end; - function TLambdaExpressionNode.AsLambdaExpression: ILambdaExpressionNode; begin Result := Self; @@ -1877,11 +1783,6 @@ begin FIsTargetPure := AIsTargetPure; end; -function TFunctionCallNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitFunctionCall(Self); -end; - function TFunctionCallNode.AsFunctionCall: IFunctionCallNode; begin Result := Self; @@ -1927,11 +1828,6 @@ begin FBody := ABody; end; -function TMacroDefinitionNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitMacroDefinition(Self); -end; - function TMacroDefinitionNode.AsMacroDefinition: IMacroDefinitionNode; begin Result := Self; @@ -1966,11 +1862,6 @@ begin FExpandedBody := AExpandedBody; end; -function TMacroExpansionNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitMacroExpansionNode(Self); -end; - function TMacroExpansionNode.AsMacroExpansion: IMacroExpansionNode; begin Result := Self; @@ -1997,11 +1888,6 @@ begin FExpression := AExpression; end; -function TQuasiquoteNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitQuasiquote(Self); -end; - function TQuasiquoteNode.AsQuasiquote: IQuasiquoteNode; begin Result := Self; @@ -2024,11 +1910,6 @@ begin FExpression := AExpression; end; -function TUnquoteNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitUnquote(Self); -end; - function TUnquoteNode.AsUnquote: IUnquoteNode; begin Result := Self; @@ -2051,11 +1932,6 @@ begin FExpression := AExpression; end; -function TUnquoteSplicingNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitUnquoteSplicing(Self); -end; - function TUnquoteSplicingNode.AsUnquoteSplicing: IUnquoteSplicingNode; begin Result := Self; @@ -2078,11 +1954,6 @@ begin FArguments := AArguments; end; -function TRecurNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitRecurNode(Self); -end; - function TRecurNode.AsRecur: IRecurNode; begin Result := Self; @@ -2105,11 +1976,6 @@ begin FExpressions := AExpressions; end; -function TBlockExpressionNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitBlockExpression(Self); -end; - function TBlockExpressionNode.AsBlockExpression: IBlockExpressionNode; begin Result := Self; @@ -2140,11 +2006,6 @@ begin FIsBoxed := AIsBoxed; end; -function TVariableDeclarationNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitVariableDeclaration(Self); -end; - function TVariableDeclarationNode.AsVariableDeclaration: IVariableDeclarationNode; begin Result := Self; @@ -2176,11 +2037,6 @@ begin FValue := AValue; end; -function TAssignmentNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitAssignment(Self); -end; - function TAssignmentNode.AsAssignment: IAssignmentNode; begin Result := Self; @@ -2208,11 +2064,6 @@ begin FIndex := AIndex; end; -function TIndexerNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitIndexer(Self); -end; - function TIndexerNode.AsIndexer: IIndexerNode; begin Result := Self; @@ -2245,11 +2096,6 @@ begin FMember := AMember; end; -function TMemberAccessNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitMemberAccess(Self); -end; - function TMemberAccessNode.AsMemberAccess: IMemberAccessNode; begin Result := Self; @@ -2284,11 +2130,6 @@ begin FGenericDef := AGenericDef; end; -function TRecordLiteralNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitRecordLiteral(Self); -end; - function TRecordLiteralNode.AsRecordLiteral: IRecordLiteralNode; begin Result := Self; @@ -2326,11 +2167,6 @@ begin FLookback := ALookback; end; -function TAddSeriesItemNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitAddSeriesItem(Self); -end; - function TAddSeriesItemNode.AsAddSeriesItem: IAddSeriesItemNode; begin Result := Self; @@ -2361,11 +2197,6 @@ begin FSeries := ASeries; end; -function TSeriesLengthNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitSeriesLength(Self); -end; - function TSeriesLengthNode.AsSeriesLength: ISeriesLengthNode; begin Result := Self; @@ -2387,11 +2218,6 @@ begin inherited Create(AStaticType, AIdentity); end; -function TNopNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitNop(Self); -end; - function TNopNode.AsNop: INopNode; begin Result := Self; @@ -2433,11 +2259,6 @@ end; { TPipeSelectorList } -function TPipeSelectorList.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitPipeSelectorList(Self); -end; - function TPipeSelectorList.AsPipeSelectorList: IPipeSelectorList; begin Result := Self; @@ -2462,11 +2283,6 @@ begin FSelectors := ASelectors; end; -function TPipeInputNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitPipeInput(Self); -end; - function TPipeInputNode.AsPipeInput: IPipeInputNode; begin Result := Self; @@ -2489,11 +2305,6 @@ end; { TPipeInputList } -function TPipeInputList.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitPipeInputList(Self); -end; - function TPipeInputList.AsPipeInputList: IPipeInputList; begin Result := Self; @@ -2518,11 +2329,6 @@ begin FTransformation := ATransformation; end; -function TPipeNode.Accept(const Visitor: IAstVisitor): TDataValue; -begin - Result := Visitor.VisitPipe(Self); -end; - function TPipeNode.AsPipe: IPipeNode; begin Result := Self; diff --git a/Src/AST/Myc.Ast.Visitor.pas b/Src/AST/Myc.Ast.Visitor.pas index 2281718..ebea59f 100644 --- a/Src/AST/Myc.Ast.Visitor.pas +++ b/Src/AST/Myc.Ast.Visitor.pas @@ -25,77 +25,8 @@ type // IAstVisitor explicit implementation (bridge methods) 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 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 // Registers a handler for a specific node kind. @@ -293,135 +224,6 @@ begin Result := TDataValue.FromGeneric(Visit(Node)); end; -function TAstVisitor.DoVisitConstant(const Node: IConstantNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitConstant(Node)); -end; -function TAstVisitor.DoVisitIdentifier(const Node: IIdentifierNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitIdentifier(Node)); -end; -function TAstVisitor.DoVisitKeyword(const Node: IKeywordNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitKeyword(Node)); -end; -function TAstVisitor.DoVisitParameterList(const Node: IParameterList): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitParameterList(Node)); -end; -function TAstVisitor.DoVisitArgumentList(const Node: IArgumentList): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitArgumentList(Node)); -end; -function TAstVisitor.DoVisitExpressionList(const Node: IExpressionList): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitExpressionList(Node)); -end; -function TAstVisitor.DoVisitRecordFieldList(const Node: IRecordFieldList): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitRecordFieldList(Node)); -end; -function TAstVisitor.DoVisitRecordField(const Node: IRecordFieldNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitRecordField(Node)); -end; -function TAstVisitor.DoVisitIfExpression(const Node: IIfExpressionNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitIfExpression(Node)); -end; -function TAstVisitor.DoVisitCondExpression(const Node: ICondExpressionNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitCondExpression(Node)); -end; -function TAstVisitor.DoVisitLambdaExpression(const Node: ILambdaExpressionNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitLambdaExpression(Node)); -end; -function TAstVisitor.DoVisitFunctionCall(const Node: IFunctionCallNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitFunctionCall(Node)); -end; -function TAstVisitor.DoVisitMacroExpansionNode(const Node: IMacroExpansionNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitMacroExpansionNode(Node)); -end; -function TAstVisitor.DoVisitBlockExpression(const Node: IBlockExpressionNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitBlockExpression(Node)); -end; -function TAstVisitor.DoVisitVariableDeclaration(const Node: IVariableDeclarationNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitVariableDeclaration(Node)); -end; -function TAstVisitor.DoVisitAssignment(const Node: IAssignmentNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitAssignment(Node)); -end; -function TAstVisitor.DoVisitMacroDefinition(const Node: IMacroDefinitionNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitMacroDefinition(Node)); -end; -function TAstVisitor.DoVisitQuasiquote(const Node: IQuasiquoteNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitQuasiquote(Node)); -end; -function TAstVisitor.DoVisitUnquote(const Node: IUnquoteNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitUnquote(Node)); -end; -function TAstVisitor.DoVisitUnquoteSplicing(const Node: IUnquoteSplicingNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitUnquoteSplicing(Node)); -end; -function TAstVisitor.DoVisitIndexer(const Node: IIndexerNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitIndexer(Node)); -end; -function TAstVisitor.DoVisitMemberAccess(const Node: IMemberAccessNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitMemberAccess(Node)); -end; -function TAstVisitor.DoVisitRecordLiteral(const Node: IRecordLiteralNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitRecordLiteral(Node)); -end; -function TAstVisitor.DoVisitCreateSeries(const Node: ICreateSeriesNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitCreateSeries(Node)); -end; -function TAstVisitor.DoVisitAddSeriesItem(const Node: IAddSeriesItemNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitAddSeriesItem(Node)); -end; -function TAstVisitor.DoVisitSeriesLength(const Node: ISeriesLengthNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitSeriesLength(Node)); -end; -function TAstVisitor.DoVisitRecurNode(const Node: IRecurNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitRecurNode(Node)); -end; -function TAstVisitor.DoVisitNop(const Node: INopNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitNop(Node)); -end; -function TAstVisitor.DoVisitPipeInput(const Node: IPipeInputNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitPipeInput(Node)); -end; -function TAstVisitor.DoVisitPipeSelectorList(const Node: IPipeSelectorList): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitPipeSelectorList(Node)); -end; -function TAstVisitor.DoVisitPipeInputList(const Node: IPipeInputList): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitPipeInputList(Node)); -end; -function TAstVisitor.DoVisitPipe(const Node: IPipeNode): TDataValue; -begin - Result := TDataValue.FromGeneric(VisitPipe(Node)); -end; - // --- Default implementations (analogous to original abstract class stubs) --- function TAstVisitor.VisitConstant(const Node: IConstantNode): T;