tcl: [1/3] prepare for jimtcl 0.81 'expr' syntax change
authorAntonio Borneo <borneo.antonio@gmail.com>
Fri, 9 Apr 2021 23:23:57 +0000 (01:23 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 8 May 2021 08:48:44 +0000 (09:48 +0100)
commitf5657aa76e795e4ed5b13a9f5df943181a123e49
tree312df46d48bcb45a4f6b5588e781bd6b80745ba0
parent82b6a41117fa99e760681d9f31163e7b68357e71
tcl: [1/3] prepare for jimtcl 0.81 'expr' syntax change

Jimtcl commit 1843b79a03dd ("expr: TIP 526, only support a single
arg") drops the support for multi-argument syntax for the TCL
command 'expr'.

In the TCL scripts distributed with OpenOCD there are 1700+ lines
that should be modified before switching to jimtcl 0.81.

Apply the script below on every script in tcl folder. It fixes
more than 92% of the lines

%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---
 #!/usr/bin/perl -Wpi

 my $re_sym = qr{[a-z_][a-z0-9_]*}i;
 my $re_var = qr{(?:\$|\$::)$re_sym};
 my $re_const = qr{0x[0-9a-f]+|[0-9]+|[0-9]*\.[0-9]*}i;
 my $re_item = qr{(?:~\s*)?(?:$re_var|$re_const)};
 my $re_op = qr{<<|>>|[+\-*/&|]};
 my $re_expr = qr{(
     (?:\(\s*(?:$re_item|(?-1))\s*\)|$re_item)
     \s*$re_op\s*
     (?:$re_item|(?-1)|\(\s*(?:$re_item|(?-1))\s*\))
 )}x;

 # [expr [dict get $regsC100 SYM] + HEXNUM]
 s/\[expr (\[dict get $re_var $re_sym\s*\] \+ *$re_const)\]/\[expr \{$1\}\]/;

 # [ expr (EXPR) ]
 # [ expr EXPR ]
 # note: $re_expr captures '$3'
 s/\[(\s*expr\s*)\((\s*$re_expr\s*)\)(\s*)\]/\[$1\{$2\}$4\]/;
 s/\[(\s*expr\s*)($re_expr)(\s*)\]/\[$1\{$2\}$4\]/;
%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---%<---

Change-Id: I0d6bddc6abf6dd29062f2b4e72b5a2b5080293b9
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/6159
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
61 files changed:
tcl/bitsbytes.tcl
tcl/board/at91cap7a-stk-sdram.cfg
tcl/board/at91sam9261-ek.cfg
tcl/board/at91sam9263-ek.cfg
tcl/board/dm355evm.cfg
tcl/board/dm365evm.cfg
tcl/board/embedded-artists_lpc2478-32.cfg
tcl/board/icnova_imx53_sodimm.cfg
tcl/board/imx31pdk.cfg
tcl/board/imx53-m53evk.cfg
tcl/board/imx53loco.cfg
tcl/board/mcb1700.cfg
tcl/chip/atmel/at91/aic.tcl
tcl/chip/atmel/at91/at91_pmc.cfg
tcl/chip/atmel/at91/at91_rstc.cfg
tcl/chip/atmel/at91/at91_wdt.cfg
tcl/chip/atmel/at91/at91sam9261_matrix.cfg
tcl/chip/atmel/at91/at91sam9263_matrix.cfg
tcl/chip/atmel/at91/at91sam9_init.cfg
tcl/chip/atmel/at91/at91sam9_sdramc.cfg
tcl/chip/atmel/at91/at91sam9_smc.cfg
tcl/chip/atmel/at91/rtt.tcl
tcl/chip/atmel/at91/usarts.tcl
tcl/chip/st/spear/quirk_no_srst.tcl
tcl/chip/st/spear/spear3xx_ddr.tcl
tcl/chip/st/stm32/stm32_rcc.tcl
tcl/chip/st/stm32/stm32_regs.tcl
tcl/cpu/arc/em.tcl
tcl/cpu/arc/hs.tcl
tcl/cpu/arc/v2.tcl
tcl/fpga/xilinx-dna.cfg
tcl/fpga/xilinx-xadc.cfg
tcl/mem_helper.tcl
tcl/memory.tcl
tcl/mmr_helpers.tcl
tcl/target/am335x.cfg
tcl/target/am437x.cfg
tcl/target/ampere_emag.cfg
tcl/target/bluenrg-x.cfg
tcl/target/c100config.tcl
tcl/target/c100helper.tcl
tcl/target/c100regs.tcl
tcl/target/davinci.cfg
tcl/target/fm4_mb9bf.cfg
tcl/target/fm4_s6e2cc.cfg
tcl/target/icepick.cfg
tcl/target/imx.cfg
tcl/target/ixp42x.cfg
tcl/target/omap4430.cfg
tcl/target/omap4460.cfg
tcl/target/or1k.cfg
tcl/target/pic32mx.cfg
tcl/target/psoc5lp.cfg
tcl/target/snps_em_sk_fpga.cfg
tcl/target/snps_hsdk.cfg
tcl/target/stm32h7x.cfg
tcl/target/ti_dm355.cfg
tcl/target/ti_dm365.cfg
tcl/target/u8500.cfg
tcl/test/selftest.cfg
tcl/tools/memtest.tcl