From 55dba26bfd2c49bbd07e4da95179a53ce5c163a8 Mon Sep 17 00:00:00 2001 From: "Konstantin Kirik (snegovick)" Date: Thu, 25 Dec 2025 17:09:35 +0300 Subject: Add logger to control debug printing from single point --- appl/lib/mkfile | 4 +++- appl/lib/sh9log.b | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ appl/lib/sh9parser.b | 2 +- 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 appl/lib/sh9log.b (limited to 'appl/lib') diff --git a/appl/lib/mkfile b/appl/lib/mkfile index 0becc2b..567d36f 100644 --- a/appl/lib/mkfile +++ b/appl/lib/mkfile @@ -3,16 +3,18 @@ TARG=\ sh9util.dis\ sh9parser.dis\ + sh9log.dis\ SYSMODULES=\ sh9util.m\ sh9parser.m\ + sh9log.m\ sys.m\ MODULES=\ - + DISBIN=$ROOT/dis/lib diff --git a/appl/lib/sh9log.b b/appl/lib/sh9log.b new file mode 100644 index 0000000..e4867e4 --- /dev/null +++ b/appl/lib/sh9log.b @@ -0,0 +1,58 @@ +implement Sh9Log; + +include "sys.m"; +include "sh9log.m"; + +sys: Sys; + +Logger.dbg(m: self ref Logger, s: string): int +{ + n:=0; + if (m.level <= LOG_DBG) { + n = sys->print("[D] %s\n", s); + } + return n; +} + +Logger.inf(m: self ref Logger, s: string): int +{ + n:=0; + if (m.level <= LOG_INF) { + n = sys->print("[I] %s\n", s); + } + return n; +} + +Logger.wrn(m: self ref Logger, s: string): int +{ + n:=0; + if (m.level <= LOG_WRN) { + n = sys->print("[W] %s\n", s); + } + return n; +} + +Logger.err(m: self ref Logger, s: string): int +{ + n:=0; + if (m.level <= LOG_ERR) { + n = sys->print("[E] %s\n", s); + } + return n; +} + +Logger.set_level(m: self ref Logger, level: int) +{ + if (m.level >= LOG_ERR) { + m.level = LOG_ERR; + } else if (m.level <= LOG_DBG) { + m.level = LOG_DBG; + } else { + m.level = level; + } +} + +init() +{ + sys = load Sys Sys->PATH; +} diff --git a/appl/lib/sh9parser.b b/appl/lib/sh9parser.b index 9f83354..75fe2e9 100644 --- a/appl/lib/sh9parser.b +++ b/appl/lib/sh9parser.b @@ -204,8 +204,8 @@ parse_toks(toks: array of ref TokNode, g: array of ref GrammarNode, debug_printi lt := len toks; if (debug_printing) { sys->print("Loop %d: ", ctr); + print_toks_short(toks); } - print_toks_short(toks); ctr ++; changed = 0; fast: for (i := 0; i < lt; i ++) { -- cgit v1.2.3