From 10d6f705aae0e358b688627df6b9d68169d1f39f Mon Sep 17 00:00:00 2001 From: bas1c <68533770+bas1c1@users.noreply.github.com> Date: Tue, 13 Dec 2022 15:37:27 +0300 Subject: [PATCH] added "typedef" operator --- SourceCode/Parser/Parser.cs | 73 ++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 30 deletions(-) diff --git a/SourceCode/Parser/Parser.cs b/SourceCode/Parser/Parser.cs index 7758dd9..782b5d4 100644 --- a/SourceCode/Parser/Parser.cs +++ b/SourceCode/Parser/Parser.cs @@ -202,42 +202,55 @@ private Statement assignmentStatement() return new AssignmentStatement(variable, expression()); } - if (current.getType() == TokenType.TYPEDEF) + if (current.getType() == TokenType.TYPEDEF) { consume(TokenType.TYPEDEF); string type = consume(TokenType.WORD).getText(); string variable = consume(TokenType.WORD).getText(); consume(TokenType.EQ); AssignmentStatement assignmentStatement = new AssignmentStatement(variable, expression(), true); - switch (type) { - case "int": { - assignmentStatement.value = new NumberValue(0); - break; - } - case "string": { - assignmentStatement.value = new NumberValue(0); - break; - } - case "dict": { - assignmentStatement.value = new NumberValue(0); - break; - } - case "stack": { - assignmentStatement.value = new NumberValue(0); - break; - } - case "bool": { - assignmentStatement.value = new NumberValue(0); - break; - } - case "obj": { - assignmentStatement.value = new NumberValue(0); - break; - } - case "arr": { - assignmentStatement.value = new NumberValue(0); - break; - } + switch (type) + { + case "int": + { + assignmentStatement.value = new NumberValue(0); + break; + } + case "enum": + { + assignmentStatement.value = new EnumValue(new Dictionary()); + break; + } + case "string": + { + assignmentStatement.value = new StringValue(null); + break; + } + case "dict": + { + assignmentStatement.value = new DictionaryValue(0); + break; + } + case "stack": + { + assignmentStatement.value = new StackValue(0); + break; + } + case "bool": + { + assignmentStatement.value = new BoolValue(true); + break; + } + case "obj": + { + assignmentStatement.value = new ObjectValue(null); + break; + } + case "arr": + { + assignmentStatement.value = new ArrayValue(0); + break; + } } return assignmentStatement; }