Use var instead of let for variables

This commit is contained in:
Stone_Red
2026-03-04 14:55:09 +01:00
parent a5f521912e
commit d4cc1d1c28
10 changed files with 69 additions and 59 deletions
+2 -1
View File
@@ -9,7 +9,7 @@ Current language syntax is documented in [SYNTAX_V2.md](SYNTAX_V2.md).
Example:
```ynt
let name = world
var name = world
print_line Hello ${name}
```
@@ -18,3 +18,4 @@ print_line Hello ${name}
```bash
dotnet run --project YesNt.Interpreter -- path/to/script.ynt
```
+5 -4
View File
@@ -20,7 +20,7 @@ This document describes the current, word-based YesNt syntax.
## Quick Example
```ynt
let name = world
var name = world
func greet:
print_line Hello ${name}
return
@@ -40,10 +40,10 @@ end_if
## While Loops
```ynt
let i = 3
var i = 3
while ${i} > 0:
print_line ${i}
let i = ${i} - 1 calc
var i = ${i} - 1 calc
end_while
```
@@ -51,7 +51,7 @@ end_while
| Area | v1 Syntax | v2 Syntax | Notes |
|---|---|---|---|
| Variables | `<x = value` | `let x = value` | Local variable define/update. |
| Variables | `<x = value` | `var x = value` | Local variable define/update. |
| Variables | `!<x = value` | `global x = value` | Global variable define/update. |
| Variables | `del x` | `delete x` | Deletes local first, then global. |
| Variables | `>x` | `${x}` | Variable read/interpolation token. |
@@ -99,3 +99,4 @@ end_while
- `%out` is intentionally kept as `%out`.
- Postfix operations are `calc`, `eval`, and `task`.
@@ -12,9 +12,9 @@ public class CodeFlowStatementsTests
{
List<string> lines =
[
"let result = before",
"var result = before",
"exit",
"let result = after",
"var result = after",
"${result}"
];
@@ -27,7 +27,7 @@ public class CodeFlowStatementsTests
List<string> lines =
[
"abort_all",
"let result = after",
"var result = after",
"${result}"
];
@@ -78,3 +78,4 @@ public class CodeFlowStatementsTests
YesNtAssert.ContainsTerminationMessage(lines, "Function \"nowhere\" not found");
}
}
@@ -26,9 +26,9 @@ public class CodeFlowTests
{
List<string> lines =
[
"let result = 1",
"var result = 1",
"goto yes",
"let result = 0",
"var result = 0",
"label yes:",
"${result}"
];
@@ -40,9 +40,9 @@ public class CodeFlowTests
{
List<string> lines =
[
"let result = low",
"var result = low",
"if 6 > 5:",
"let result = high",
"var result = high",
"end_if",
"${result}"
];
@@ -55,11 +55,11 @@ public class CodeFlowTests
{
List<string> lines =
[
"let result = low",
"var result = low",
"if 6 < 5:",
"let result = high",
"var result = high",
"else:",
"let result = medium",
"var result = medium",
"end_if",
"${result}"
];
@@ -72,12 +72,12 @@ public class CodeFlowTests
{
List<string> lines =
[
"let result = 0",
"var result = 0",
"if 1 == 1:",
"if 2 == 3:",
"let result = 1",
"var result = 1",
"else:",
"let result = 2",
"var result = 2",
"end_if",
"end_if",
"${result}"
@@ -91,9 +91,9 @@ public class CodeFlowTests
{
List<string> lines =
[
"let i = 3",
"var i = 3",
"while ${i} > 0:",
"let i = ${i} - 1 calc",
"var i = ${i} - 1 calc",
"end_while",
"${i}"
];
@@ -106,9 +106,9 @@ public class CodeFlowTests
{
List<string> lines =
[
"let i = 0",
"var i = 0",
"while ${i} > 0:",
"let i = 99",
"var i = 99",
"end_while",
"${i}"
];
@@ -121,15 +121,15 @@ public class CodeFlowTests
{
List<string> lines =
[
"let outer = 2",
"let count = 0",
"var outer = 2",
"var count = 0",
"while ${outer} > 0:",
"let inner = 2",
"var inner = 2",
"while ${inner} > 0:",
"let count = ${count} + 1 calc",
"let inner = ${inner} - 1 calc",
"var count = ${count} + 1 calc",
"var inner = ${inner} - 1 calc",
"end_while",
"let outer = ${outer} - 1 calc",
"var outer = ${outer} - 1 calc",
"end_while",
"${count}"
];
@@ -142,11 +142,11 @@ public class CodeFlowTests
{
List<string> lines =
[
"let result = 0",
"var result = 0",
"if 2 > 1:",
"let result = 1",
"var result = 1",
"else:",
"let result = 2",
"var result = 2",
"end_if",
"${result}"
];
@@ -159,9 +159,9 @@ public class CodeFlowTests
{
List<string> lines =
[
"let result = 5",
"var result = 5",
"if 1 == 2:",
"let result = 1",
"var result = 1",
"end_if",
"${result}"
];
@@ -174,11 +174,11 @@ public class CodeFlowTests
{
List<string> lines =
[
"let result = 0",
"var result = 0",
"if 1 == 1 goto done",
"let result = 2",
"var result = 2",
"label done:",
"let result = ${result} + 1 calc",
"var result = ${result} + 1 calc",
"${result}"
];
@@ -228,7 +228,7 @@ public class CodeFlowTests
List<string> lines =
[
"if 1 == 2:",
"let result = 1"
"var result = 1"
];
YesNtAssert.ContainsTerminationMessage(lines, "No matching end_if found");
@@ -250,9 +250,9 @@ public class CodeFlowTests
{
List<string> lines =
[
"let i = 0",
"var i = 0",
"while ${i} > 1:",
"let i = ${i} + 1 calc"
"var i = ${i} + 1 calc"
];
YesNtAssert.ContainsTerminationMessage(lines, "No matching end_while found");
@@ -269,3 +269,4 @@ public class CodeFlowTests
YesNtAssert.ContainsTerminationMessage(lines, "No matching while found");
}
}
@@ -62,7 +62,7 @@ public class ConsoleStatementsTests
List<string> lines =
[
"let value = %read_line",
"var value = %read_line",
"${value}"
];
@@ -95,7 +95,7 @@ public class ConsoleStatementsTests
List<string> lines =
[
"let value = %read_key"
"var value = %read_key"
];
_ = Task.Run(() => interpreter.Execute(lines, true));
@@ -108,3 +108,4 @@ public class ConsoleStatementsTests
StringAssert.Contains(output.ToString(), "Terminated by external process");
}
}
@@ -32,14 +32,14 @@ public class FunctionStatementsTests
"goto main",
"func probe:",
"global hasInBefore = %has_in",
"let consume = %in",
"var consume = %in",
"global hasInAfter = %has_in",
"push_out ${hasInBefore}",
"push_out ${hasInAfter}",
"return",
"label main:",
"call probe with x",
"let hasOut = %has_out",
"var hasOut = %has_out",
"${hasOut}"
];
@@ -57,7 +57,7 @@ public class FunctionStatementsTests
"return",
"label main:",
"call make with anything",
"let value = %out",
"var value = %out",
"${value}"
];
@@ -69,7 +69,7 @@ public class FunctionStatementsTests
{
List<string> lines =
[
"let x = %out"
"var x = %out"
];
YesNtAssert.ContainsTerminationMessage(lines, "No out argument in stack");
@@ -80,7 +80,7 @@ public class FunctionStatementsTests
{
List<string> lines =
[
"let x = %in"
"var x = %in"
];
YesNtAssert.ContainsTerminationMessage(lines, "Statement not allowed outside of function");
@@ -138,10 +138,11 @@ public class FunctionStatementsTests
List<string> lines =
[
"clear_call_stack",
"let result = ok",
"var result = ok",
"${result}"
];
YesNtAssert.IsLastLineEqual(lines, "ok");
}
}
@@ -68,7 +68,7 @@ public class ProcessingStatementsTests
List<string> lines =
[
"sleep 5",
"let result = ok",
"var result = ok",
"${result}"
];
@@ -81,7 +81,7 @@ public class ProcessingStatementsTests
List<string> lines =
[
"length hello",
"let value = %out",
"var value = %out",
"${value}"
];
@@ -95,7 +95,7 @@ public class ProcessingStatementsTests
try
{
File.WriteAllText(tempFile, "let imported = yes");
File.WriteAllText(tempFile, "var imported = yes");
List<string> lines =
[
@@ -139,3 +139,4 @@ public class ProcessingStatementsTests
YesNtAssert.IsLastLineEqual(lines, "1", timeout: 3000);
}
}
@@ -13,7 +13,7 @@ public class SystemStatementsTests
List<string> lines =
[
"exec cmd with /c,echo yesnt",
"let exitCode = %out",
"var exitCode = %out",
"${exitCode}"
];
@@ -28,7 +28,7 @@ public class SystemStatementsTests
"push_in /c",
"push_in echo yesnt",
"exec cmd",
"let exitCode = %out",
"var exitCode = %out",
"${exitCode}"
];
@@ -46,3 +46,4 @@ public class SystemStatementsTests
YesNtAssert.ContainsTerminationMessage(lines, "Failed to start \"does_not_exist_abc_xyz\"");
}
}
@@ -12,7 +12,7 @@ public class VariableStatementsTests
{
List<string> lines =
[
"let value = hi",
"var value = hi",
"${value}"
];
@@ -37,7 +37,7 @@ public class VariableStatementsTests
List<string> lines =
[
"global value = global",
"let value = local",
"var value = local",
"${value}"
];
@@ -49,7 +49,7 @@ public class VariableStatementsTests
{
List<string> lines =
[
"let value = a",
"var value = a",
"delete value",
"global value = b",
"${value}"
@@ -74,7 +74,7 @@ public class VariableStatementsTests
{
List<string> lines =
[
"let a"
"var a"
];
YesNtAssert.ContainsTerminationMessage(lines, "Invalid statement");
@@ -85,7 +85,7 @@ public class VariableStatementsTests
{
List<string> lines =
[
"let a b = 1"
"var a b = 1"
];
YesNtAssert.ContainsTerminationMessage(lines, "Invalid Syntax");
@@ -102,3 +102,4 @@ public class VariableStatementsTests
YesNtAssert.ContainsTerminationMessage(lines, "Variable \"missing\" not found");
}
}
@@ -1,4 +1,4 @@
using System.Text.RegularExpressions;
using System.Text.RegularExpressions;
using YesNt.Interpreter.Attributes;
using YesNt.Interpreter.Enums;
@@ -8,7 +8,7 @@ namespace YesNt.Interpreter.Statements;
internal partial class VariableStatements : StatementRuntimeInformation
{
[Statement("let", SearchMode.StartOfLine, SpaceAround.End, System.ConsoleColor.DarkBlue, Priority = Priority.VeryLow, Separator = "=")]
[Statement("var", SearchMode.StartOfLine, SpaceAround.End, System.ConsoleColor.DarkBlue, Priority = Priority.VeryLow, Separator = "=")]
public void DefineVariable(string args)
{
string[] parts = args.Split('=');
@@ -118,3 +118,4 @@ internal partial class VariableStatements : StatementRuntimeInformation
[GeneratedRegex("\\$\\{([a-zA-Z0-9]+)\\}")]
private static partial Regex VariableStatementRegex();
}