From f1875736e37776c59ce8e41d4862692ce08f9df6 Mon Sep 17 00:00:00 2001 From: Mattia Giambirtone Date: Wed, 7 Dec 2022 09:15:29 +0100 Subject: [PATCH] Added switch statements --- src/backend/vm.nim | 2 ++ src/frontend/compiler.nim | 22 ++++++++++++++++++++ src/frontend/meta/ast.nim | 17 +++++++++++++++- src/frontend/meta/bytecode.nim | 4 +++- src/frontend/meta/token.nim | 2 +- src/frontend/parser.nim | 25 +++++++++++++++++++++++ src/util/symbols.nim | 5 +++-- tests/switch.pn | 37 ++++++++++++++++++++++++++++++++++ 8 files changed, 109 insertions(+), 5 deletions(-) create mode 100644 tests/switch.pn diff --git a/src/backend/vm.nim b/src/backend/vm.nim index ef9ad76..47fb969 100644 --- a/src/backend/vm.nim +++ b/src/backend/vm.nim @@ -851,6 +851,8 @@ proc dispatch*(self: var PeonVM) = # Pops N elements off the call stack for _ in 0..", "<", "=", "~", "/", "+", "-", "_", "*", "?", "@", ":", "==", "!=", ">=", "<=", "+=", "-=", "/=", "*=", "**=", "!", "%", "&", "|", "^", ">>", "<<"]: diff --git a/tests/switch.pn b/tests/switch.pn new file mode 100644 index 0000000..16985cb --- /dev/null +++ b/tests/switch.pn @@ -0,0 +1,37 @@ +import std; + + +switch 2 + 2 { + case 4 { + print(true); + } + case 3 { + print(false); + } + else { + print(false); + } +} + + +switch 2 + 1 { + case 4 { + print(false); + } + case 3 { + print(true); + } +} + + +switch 2 + 3 { + case 4 { + print(false); + } + case 3 { + print(false); + } + else { + print(true); + } +}