Skip to content

Commit 71317c5

Browse files
Added increment operators
1 parent db46b7d commit 71317c5

File tree

5 files changed

+63
-17
lines changed

5 files changed

+63
-17
lines changed

CritLang/Content/Crit.g4

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ whileBlock: WHILE expression block ('else' elseIfBlock);
1515

1616
WHILE: 'while' | 'until';
1717

18-
assignment: IDENTIFIER '=' expression;
18+
assignment: IDENTIFIER assignmentOp expression;
19+
20+
assignmentOp: '=' | '*=' | '/=' | '%=' | '+=' | '-=';
1921

2022
functionCall: IDENTIFIER '(' (expression (',' expression)*)? ')';
2123

CritLang/Content/test.crit

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
1-
ola = [1, "dois", 3, "quatro"];
1+
ola = 5;
22

33

4-
WriteLine(ola);
54

6-
Remove(ola, 1);
5+
ola *= 2;
76

8-
WriteLine("----------------");
9-
WriteLine(ola);
7+
ola /= 3;
108

9+
ola -= 1.3333;
1110

12-
Add(ola, 69.420);
11+
ola += 3;
12+
13+
ola %= 2
1314

14-
WriteLine("----------------");
1515
WriteLine(ola);
16+
17+
18+
19+
20+
21+
22+
23+
24+
25+

CritLang/CritVisitor.cs

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public CritVisitor()
2525
}
2626

2727

28-
private object? RemoveArr(object?[] args)
28+
private static object? RemoveArr(object?[] args)
2929
{
3030
if (args.Length != 2)
3131
{
@@ -172,6 +172,8 @@ public CritVisitor()
172172

173173
var value = Visit(context.expression());
174174

175+
var op = context.assignmentOp().GetText();
176+
175177
if (varName.Contains('[') && varName.Contains(']'))
176178
{
177179
string[] variableHelper = varName.Replace("]", string.Empty).Split('[');
@@ -203,9 +205,42 @@ public CritVisitor()
203205
}
204206

205207
}
206-
else
208+
209+
else switch (op)
207210
{
208-
Variables[varName] = value;
211+
case "*=":
212+
{
213+
var varValue = Convert.ToSingle(Variables[varName]!);
214+
Variables[varName] = varValue * Convert.ToSingle(value!);
215+
break;
216+
}
217+
case "/=":
218+
{
219+
var varValue = Convert.ToSingle(Variables[varName]!);
220+
Variables[varName] = varValue / Convert.ToSingle(value!);
221+
break;
222+
}
223+
case "%=":
224+
{
225+
var varValue = Convert.ToSingle(Variables[varName]!);
226+
Variables[varName] = varValue % Convert.ToSingle(value!);
227+
break;
228+
}
229+
case "+=":
230+
{
231+
var varValue = Convert.ToSingle(Variables[varName]!);
232+
Variables[varName] = varValue + Convert.ToSingle(value!);
233+
break;
234+
}
235+
case "-=":
236+
{
237+
var varValue = Convert.ToSingle(Variables[varName]!);
238+
Variables[varName] = varValue - Convert.ToSingle(value!);
239+
break;
240+
}
241+
default:
242+
Variables[varName] = value;
243+
break;
209244
}
210245

211246

@@ -331,7 +366,6 @@ public CritVisitor()
331366
};
332367
}
333368

334-
335369
private static object? Add(object? left, object? right) => (left, right) switch
336370
{
337371
(int l, int r) => l + r,

CritLang/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using CritLang;
33
using CritLang.Content;
44

5-
string VERSION = "v0.1.5-beta";
5+
string VERSION = "v0.1.6-beta";
66

77
string fileName = CommandLineArgs.Parse(args, VERSION);
88

CritLang/sieve.crit

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ i = 0;
88

99
while i < rounds {
1010
total[i] = true;
11-
i = i + 1;
11+
i += 1;
1212
}
1313

1414
#start of sieve
@@ -24,10 +24,10 @@ while num < Sqrt(rounds) {
2424

2525
while j < rounds {
2626
total[j] = false;
27-
j = j + num;
27+
j += num;
2828
}
2929
}
30-
num = num + 1;
30+
num += 1;
3131
}
3232

3333

@@ -37,7 +37,7 @@ while k < rounds {
3737
if total[k] == true {
3838
primes = primes + 1;
3939
}
40-
k = k + 1;
40+
k += 1;
4141
}
4242
composites = rounds - primes;
4343
WriteLine("Found " + primes + " and " + composites + " composites in " + rounds + " numbers!");

0 commit comments

Comments
 (0)