diff --git a/new/AutoItInterpreter/AssemblyInfo.cs b/new/AutoItInterpreter/AssemblyInfo.cs index 548d9a67..96583d38 100644 --- a/new/AutoItInterpreter/AssemblyInfo.cs +++ b/new/AutoItInterpreter/AssemblyInfo.cs @@ -1,15 +1,15 @@ ////////////////////////////////////////////////////////////////////////// -// Autogenerated 2020-07-13 10:29:19.365 // +// Autogenerated 2020-07-13 15:26:52.055 // // ANY CHANGES TO THIS DOCUMENT WILL BE LOST UPON RE-GENERATION // ////////////////////////////////////////////////////////////////////////// using System.Reflection; using System; -[assembly: AssemblyVersion("0.5.1045.20195")] -[assembly: AssemblyFileVersion("0.5.1045.20195")] -[assembly: AssemblyInformationalVersion("53153e693226163009d9ef9f010a66e9762ffbde")] +[assembly: AssemblyVersion("0.5.1055.20195")] +[assembly: AssemblyFileVersion("0.5.1055.20195")] +[assembly: AssemblyInformationalVersion("b577bfd8fb4d7256e4ed61801285a044356294bb")] [assembly: AssemblyCompany("Unknown6656")] [assembly: AssemblyCopyright("Copyright © 2018 - 2020, Unknown6656")] [assembly: AssemblyProduct("AutoIt3 Interpreter by Unknown6656")] @@ -20,6 +20,6 @@ public static class __module__ public static string Author { get; } = "Unknown6656"; public static string Year { get; } = "2018 - 2020"; public static string Copyright { get; } = "Copyright © 2018 - 2020, Unknown6656"; - public static Version? InterpreterVersion { get; } = Version.Parse("0.5.1045.20195"); - public static string GitHash { get; } = "53153e693226163009d9ef9f010a66e9762ffbde"; + public static Version? InterpreterVersion { get; } = Version.Parse("0.5.1055.20195"); + public static string GitHash { get; } = "b577bfd8fb4d7256e4ed61801285a044356294bb"; } diff --git a/new/AutoItInterpreter/AutoItInterpreter.csproj b/new/AutoItInterpreter/AutoItInterpreter.csproj index 9262b793..d9d8912a 100644 --- a/new/AutoItInterpreter/AutoItInterpreter.csproj +++ b/new/AutoItInterpreter/AutoItInterpreter.csproj @@ -3,7 +3,7 @@ Exe net5.0 enable - $Program.$Main + $(SolutionDir)bin preview false diff --git a/new/AutoItInterpreter/Extensibility/Plugins.Au3Framework.Functions.cs b/new/AutoItInterpreter/Extensibility/Plugins.Au3Framework.Functions.cs index c69d3ebf..ec624a5c 100644 --- a/new/AutoItInterpreter/Extensibility/Plugins.Au3Framework.Functions.cs +++ b/new/AutoItInterpreter/Extensibility/Plugins.Au3Framework.Functions.cs @@ -132,19 +132,19 @@ public sealed class FrameworkFunctions ProvidedNativeFunction.Create(nameof(ObjName), 1, 2, ObjName, 1), ProvidedNativeFunction.Create(nameof(StringAddCR), 1, StringAddCR), ProvidedNativeFunction.Create(nameof(StringCompare), 2, 3, StringCompare, Variant.Zero), - ProvidedNativeFunction.Create(nameof(StringFormat), , StringFormat), - ProvidedNativeFunction.Create(nameof(StringFromASCIIArray), , StringFromASCIIArray), - ProvidedNativeFunction.Create(nameof(StringInStr), , StringInStr), + ProvidedNativeFunction.Create(nameof(StringFormat), 1, 33, StringFormat), + // ProvidedNativeFunction.Create(nameof(StringFromASCIIArray), , StringFromASCIIArray), + // ProvidedNativeFunction.Create(nameof(StringInStr), , StringInStr), ProvidedNativeFunction.Create(nameof(StringLeft), 2, StringLeft), ProvidedNativeFunction.Create(nameof(StringLen), 1, StringLen), ProvidedNativeFunction.Create(nameof(StringLower), 1, StringLower), ProvidedNativeFunction.Create(nameof(StringMid), 2, 3, StringMid, -1), - ProvidedNativeFunction.Create(nameof(StringRegExp), , StringRegExp), - ProvidedNativeFunction.Create(nameof(StringRegExpReplace ), , StringRegExpReplace ), - ProvidedNativeFunction.Create(nameof(StringReplace), , StringReplace), - ProvidedNativeFunction.Create(nameof(StringReverse), , StringReverse), + // ProvidedNativeFunction.Create(nameof(StringRegExp), , StringRegExp), + // ProvidedNativeFunction.Create(nameof(StringRegExpReplace ), , StringRegExpReplace ), + // ProvidedNativeFunction.Create(nameof(StringReplace), , StringReplace), + // ProvidedNativeFunction.Create(nameof(StringReverse), , StringReverse), ProvidedNativeFunction.Create(nameof(StringRight), 2, StringRight), - ProvidedNativeFunction.Create(nameof(StringSplit), , StringSplit), + // ProvidedNativeFunction.Create(nameof(StringSplit), , StringSplit), ProvidedNativeFunction.Create(nameof(StringStripCR), 1, StringStripCR), ProvidedNativeFunction.Create(nameof(StringStripWS), 2, StringStripWS), ProvidedNativeFunction.Create(nameof(StringToASCIIArray), 1, 4, StringToASCIIArray, Variant.Zero, Variant.Default, Variant.Zero), @@ -1477,6 +1477,7 @@ public static FunctionReturnValue ObjGet(CallFrame frame, Variant[] args) string path = args[0].ToString(); + throw new NotImplementedException(); } public static FunctionReturnValue ObjName(CallFrame frame, Variant[] args) @@ -1503,19 +1504,17 @@ public static FunctionReturnValue ObjName(CallFrame frame, Variant[] args) _ => StringComparison.CurrentCultureIgnoreCase, }); - public static FunctionReturnValue StringFormat(CallFrame frame, Variant[] args) - { - } - - public static FunctionReturnValue StringFromASCIIArray(CallFrame frame, Variant[] args) - { - - } - - public static FunctionReturnValue StringInStr(CallFrame frame, Variant[] args) - { + public static FunctionReturnValue StringFormat(CallFrame frame, Variant[] args) => (Variant)StringFormatter.FormatString(args[0].ToString(), args[1..]); - } + // public static FunctionReturnValue StringFromASCIIArray(CallFrame frame, Variant[] args) + // { + // + // } + // + // public static FunctionReturnValue StringInStr(CallFrame frame, Variant[] args) + // { + // + // } public static FunctionReturnValue StringLeft(CallFrame frame, Variant[] args) { @@ -1543,25 +1542,25 @@ public static FunctionReturnValue StringMid(CallFrame frame, Variant[] args) return (Variant)(len < 0 ? "" : str.Substring(start, len)); } - public static FunctionReturnValue StringRegExp(CallFrame frame, Variant[] args) - { - - } - - public static FunctionReturnValue StringRegExpReplace(CallFrame frame, Variant[] args) - { - - } - - public static FunctionReturnValue StringReplace(CallFrame frame, Variant[] args) - { - - } - - public static FunctionReturnValue StringReverse(CallFrame frame, Variant[] args) - { - - } + // public static FunctionReturnValue StringRegExp(CallFrame frame, Variant[] args) + // { + // + // } + // + // public static FunctionReturnValue StringRegExpReplace(CallFrame frame, Variant[] args) + // { + // + // } + // + // public static FunctionReturnValue StringReplace(CallFrame frame, Variant[] args) + // { + // + // } + // + // public static FunctionReturnValue StringReverse(CallFrame frame, Variant[] args) + // { + // + // } public static FunctionReturnValue StringRight(CallFrame frame, Variant[] args) { @@ -1575,10 +1574,10 @@ public static FunctionReturnValue StringRight(CallFrame frame, Variant[] args) }); } - public static FunctionReturnValue StringSplit(CallFrame frame, Variant[] args) - { - - } + // public static FunctionReturnValue StringSplit(CallFrame frame, Variant[] args) + // { + // + // } public static FunctionReturnValue StringStripCR(CallFrame frame, Variant[] args) => (Variant)args[0].ToString().Replace("\r", ""); diff --git a/new/AutoItInterpreter/Properties/launchSettings.json b/new/AutoItInterpreter/Properties/launchSettings.json index 06f41030..a4d59613 100644 --- a/new/AutoItInterpreter/Properties/launchSettings.json +++ b/new/AutoItInterpreter/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "AutoItInterpreter": { "commandName": "Project", - "commandLineArgs": "-vv -t ../test/test" + "commandLineArgs": "-vq -t ../test/unittest-stringformat" } } } \ No newline at end of file diff --git a/new/AutoItInterpreter/Runtime/AU3Thread.cs b/new/AutoItInterpreter/Runtime/AU3Thread.cs index 249b1802..65c93950 100644 --- a/new/AutoItInterpreter/Runtime/AU3Thread.cs +++ b/new/AutoItInterpreter/Runtime/AU3Thread.cs @@ -274,6 +274,44 @@ protected override Union InternalExec(Variant[] args) public sealed class AU3CallFrame : CallFrame { + private const RegexOptions _REGEX_OPTIONS = RegexOptions.IgnoreCase | RegexOptions.Compiled; + private static readonly Regex REGEX_INTERNAL_LABEL = new Regex(@"^§\w+$", _REGEX_OPTIONS); + private static readonly Regex REGEX_VARIABLE = new Regex(@"\$([^\W\d]|[^\W\d]\w*)\b", _REGEX_OPTIONS); + private static readonly Regex REGEX_GOTO = new Regex(@"^goto\s+(?