Skip to content

Commit 52c9bec

Browse files
authored
added "switch-case" statement
1 parent 4926a6f commit 52c9bec

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

SourceCode/Parser/Parser.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ private Statement statement()
8989
{
9090
return new ReturnStatement(expression());
9191
}
92+
if (match(TokenType.SWITCH))
93+
{
94+
return switchs();
95+
}
9296
if (match(TokenType.USE))
9397
{
9498
return new UseStatement(expression().ToString());
@@ -152,6 +156,22 @@ private FunctionDefine functionDefine()
152156
return new FunctionDefine(name, argNames, body);
153157
}
154158

159+
private Statement switchs()
160+
{
161+
Expression expr = expression();
162+
List<CaseStatement> caseStatements = new List<CaseStatement>();
163+
consume(TokenType.LBRACE);
164+
165+
while (!(match(TokenType.RBRACE)))
166+
{
167+
consume(TokenType.CASE);
168+
Expression curr = expression();
169+
caseStatements.Add(new CaseStatement(curr, expr, block()));
170+
}
171+
172+
return new SwitchStatement(caseStatements);
173+
}
174+
155175
private Statement enums()
156176
{
157177
string name = consume(TokenType.WORD).getText();

0 commit comments

Comments
 (0)