diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 2e6f076eb..7c7acf741 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "8"; public const string Build = "3"; - public const string Revision = "3121"; + public const string Revision = "3123"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 005c69cfb..297e54478 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %MINOR%=8 -%REVISION%=3121 +%REVISION%=3123 %COREVERSION%=3 %MAJOR%=3 diff --git a/InstallerSamples/Algorithms/Recursion/Golomb.pas b/InstallerSamples/Algorithms/Recursion/Golomb.pas new file mode 100644 index 000000000..b8c1d1af9 --- /dev/null +++ b/InstallerSamples/Algorithms/Recursion/Golomb.pas @@ -0,0 +1,12 @@ +// Последовательность Голомба G(n) - это такая единственная неубывающая последовательность +// натуральных чисел, в которой n появляется ровно G(n) раз +// 1 2 2 3 3 4 4 4 5 5 5 6 6 6 6 … +// Без кеширования время выполнения огромное за счет повторяющихся рекурсивных вызовов +[Cache] +function G(n: int64): int64 := n = 1 ? 1 : 1 + G(n - G(G(n - 1))); + +begin + var n := 100000; + (1..n).Sum(i -> G(i)).Print; + Milliseconds.Print; +end. \ No newline at end of file diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs index a85553632..df353830a 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs @@ -2,7 +2,7 @@ // This CSharp output file generated by Gardens Point LEX // Version: 1.1.3.301 // Machine: DESKTOP-G8V08V4 -// DateTime: 08.05.2022 19:51:09 +// DateTime: 10.05.2022 19:00:28 // UserName: ????????? // GPLEX input file // GPLEX frame file diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs index 72b78b9a0..4b1e6a81a 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -2,7 +2,7 @@ // GPPG version 1.3.6 // Machine: DESKTOP-G8V08V4 -// DateTime: 08.05.2022 19:51:10 +// DateTime: 10.05.2022 19:00:28 // UserName: ????????? // Input file diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.ymc b/Parsers/PascalABCParserNewSaushkin/PABC.ymc index 431fca478..142e5a7b3 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.ymc +++ b/Parsers/PascalABCParserNewSaushkin/PABC.ymc @@ -358,5 +358,6 @@ script= + diff --git a/PluginsSupport/Interfaces.cs b/PluginsSupport/Interfaces.cs index 0394c8bf0..fcd5471a3 100644 --- a/PluginsSupport/Interfaces.cs +++ b/PluginsSupport/Interfaces.cs @@ -64,7 +64,9 @@ namespace VisualPascalABCPlugins ProcessExited } public delegate void ChangeVisualEnvironmentStateDelegate(VisualEnvironmentState State, object obj); - + // SSM 16/05/22 - RunManager + public delegate void RunnerManagerActionDelegate(string fileName); + public enum SourceLocationAction { SelectAndGotoBeg, @@ -293,6 +295,8 @@ namespace VisualPascalABCPlugins public interface IWorkbenchRunService { + event RunnerManagerActionDelegate Starting; // + event RunnerManagerActionDelegate Exited; // bool IsRun(); bool IsRun(string FileName); bool Run(bool RedirectConsoleIO); diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index 4ed234109..efe4f8e98 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.8.3.3121 +3.8.3.3123 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index f4b3aea02..6c3afb9bc 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.8.3.3121' +!define VERSION '3.8.3.3123' diff --git a/VisualPascalABCNET/DS/RunManager/RunManager.cs b/VisualPascalABCNET/DS/RunManager/RunManager.cs index 1125e1219..ef4294b9f 100644 --- a/VisualPascalABCNET/DS/RunManager/RunManager.cs +++ b/VisualPascalABCNET/DS/RunManager/RunManager.cs @@ -7,6 +7,7 @@ using System.Text; using PascalABCCompiler.Errors; using System.IO; using System.Diagnostics; +using VisualPascalABCPlugins; namespace VisualPascalABC { @@ -204,8 +205,6 @@ namespace VisualPascalABC */ } - - public delegate void RunnerManagerActionDelegate(string fileName); public event RunnerManagerActionDelegate Exited; public event RunnerManagerActionDelegate Starting; diff --git a/VisualPascalABCNET/DS/VisualEnvironmentCompiler.cs b/VisualPascalABCNET/DS/VisualEnvironmentCompiler.cs index 831a4baf5..9f523871c 100644 --- a/VisualPascalABCNET/DS/VisualEnvironmentCompiler.cs +++ b/VisualPascalABCNET/DS/VisualEnvironmentCompiler.cs @@ -90,8 +90,8 @@ namespace VisualPascalABC this.DebugHelper = DebugHelper; DebugHelper.Starting += new DebugHelper.DebugHelperActionDelegate(DebugHelper_Starting); DebugHelper.Exited += new DebugHelper.DebugHelperActionDelegate(DebugHelper_Exited); - RunnerManager.Starting += new RunManager.RunnerManagerActionDelegate(RunnerManager_Starting); - RunnerManager.Exited += new RunManager.RunnerManagerActionDelegate(RunnerManager_Exited); + RunnerManager.Starting += new RunnerManagerActionDelegate(RunnerManager_Starting); + RunnerManager.Exited += new RunnerManagerActionDelegate(RunnerManager_Exited); this.CodeCompletionParserController = WorkbenchServiceFactory.CodeCompletionParserController; this.CodeCompletionParserController.visualEnvironmentCompiler = this; this.UserOptions = UserOptions; diff --git a/VisualPascalABCNET/Workbench/RunService.cs b/VisualPascalABCNET/Workbench/RunService.cs index 62c38f96c..6e335753f 100644 --- a/VisualPascalABCNET/Workbench/RunService.cs +++ b/VisualPascalABCNET/Workbench/RunService.cs @@ -30,12 +30,36 @@ namespace VisualPascalABC private Dictionary RunArgumentsTable = new Dictionary(); bool RunActiveTabPage = false; + // SSM 16/05/22 - добавил чтобы иметь возможность добавлять обработчики во внешнем плагине + public event RunnerManagerActionDelegate Starting + { + add + { + RunnerManager.Starting += value; + } + remove + { + RunnerManager.Starting -= value; + } + } + public event RunnerManagerActionDelegate Exited + { + add + { + RunnerManager.Exited += value; + } + remove + { + RunnerManager.Exited -= value; + } + } + public WorkbenchRunService() { Workbench = WorkbenchServiceFactory.Workbench; RunnerManager = new RunManager(ReadStringRequest); - RunnerManager.Exited += new RunManager.RunnerManagerActionDelegate(RunnerManager_Exited); - RunnerManager.Starting += new RunManager.RunnerManagerActionDelegate(RunnerManager_Started); + RunnerManager.Exited += new RunnerManagerActionDelegate(RunnerManager_Exited); + RunnerManager.Starting += new RunnerManagerActionDelegate(RunnerManager_Started); RunnerManager.OutputStringReceived += new RunManager.TextRecivedDelegate(RunnerManager_OutputStringReceived); RunnerManager.RunnerManagerUnhanledRuntimeException += new RunManager.RunnerManagerUnhanledRuntimeExceptionDelegate(RunnerManager_RunnerManagerUnhanledRuntimeException); DesignerService = WorkbenchServiceFactory.DesignerService;