From dd030ebd4bad0fa144953d4e4760bf2ce1904fc9 Mon Sep 17 00:00:00 2001 From: tijani Date: Wed, 1 Jun 2022 14:20:16 +0000 Subject: [PATCH] This allows tracing information to be displayed. STRICTLY FOR TESTING ONLY, SHOULD BE TURNED OFF IN THE ACTUAL INTERPRETER. git-svn-id: https://svn.tlawal.org/svn/monkey@27 f6afcba9-9ef1-4bdd-9b72-7484f5705bac --- parser/parser_tracing.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 parser/parser_tracing.go diff --git a/parser/parser_tracing.go b/parser/parser_tracing.go new file mode 100644 index 0000000..5fc569b --- /dev/null +++ b/parser/parser_tracing.go @@ -0,0 +1,32 @@ +package parser + +import ( + "fmt" + "strings" +) + +var traceLevel int = 0 + +const traceIdentPlaceholder string = "\t" + +func identLevel() string { + return strings.Repeat(traceIdentPlaceholder, traceLevel-1) +} + +func tracePrint(fs string) { + fmt.Printf("%s%s\n", identLevel(), fs) +} + +func incIdent() { traceLevel = traceLevel + 1 } +func decIdent() { traceLevel = traceLevel - 1 } + +func trace(msg string) string { + incIdent() + tracePrint("BEGIN " + msg) + return msg +} + +func untrace(msg string) { + tracePrint("END " + msg) + decIdent() +}