From 7f8cf65c6e64d28a76ac52849b707dcbcbdcd923 Mon Sep 17 00:00:00 2001 From: Mel Date: Tue, 5 Jul 2022 22:29:55 +0200 Subject: Compile ForCond statements --- pkg/lang/compiler/compiler_test.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'pkg/lang/compiler/compiler_test.go') diff --git a/pkg/lang/compiler/compiler_test.go b/pkg/lang/compiler/compiler_test.go index 88413c7..1a759f8 100644 --- a/pkg/lang/compiler/compiler_test.go +++ b/pkg/lang/compiler/compiler_test.go @@ -234,6 +234,37 @@ func TestNestedIfs(t *testing.T) { mustCompileTo(t, src, expected) } +func TestForCond(t *testing.T) { + src := ` + for true { + for false { + 1 + } + } + ` + + expected := ` + @start: + push_true + jf @end + + @inner_start: + push_false + jf @inner_end + + push_int 1 + jmp @inner_start + + @inner_end: + jmp @start + + @end + halt + ` + + mustCompileTo(t, src, expected) +} + func mustCompileTo(t *testing.T, src, expected string) { scanner := scanner.New(strings.NewReader(src)) tokens, err := scanner.Scan() -- cgit 1.4.1