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+(?