summaryrefslogtreecommitdiffstats
path: root/tools/spencer2regexp.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/spencer2regexp.tcl')
-rw-r--r--tools/spencer2regexp.tcl174
1 files changed, 0 insertions, 174 deletions
diff --git a/tools/spencer2regexp.tcl b/tools/spencer2regexp.tcl
deleted file mode 100644
index b23f806..0000000
--- a/tools/spencer2regexp.tcl
+++ /dev/null
@@ -1,174 +0,0 @@
-# spencer2regexp.tcl --
-#
-# This file generates a test suite for the regexp command based on
-# Henry Spencer's test suite. This script must be run in tcl 8.1 or
-# higher and takes an output filename as its parameter.
-#
-# Copyright (c) 1996 by Sun Microsystems, Inc.
-#
-# SCCS: @(#) spencer2regexp.tcl 1.4 98/01/22 14:48:09
-#
-
-source ../tools/regexpTestLib.tcl
-
-#
-# remove flags that have no meaning
-#
-proc removeFlags {flags} {
- regsub -all {a|s|&|-|/|\+|,|\$|;|:|>|=|\.|\[|[A-Z]|[0-9]} $flags "" newFlags
- return $newFlags
-}
-
-#
-# NOTBOL flag is already tested and can't be tested from the command line, skip ^
-# L is locale dependant, skip L
-# $ flag has no (?$) meaning
-# b&a and q&e are bad flag combinations
-#
-proc findSkipFlag {flags} {
- if {[string first "^" $flags] != -1} {
- return 1
- }
- if {([string first "q" $flags] != -1)
- && ([string first "e" $flags] != -1)} {
- return 1
- }
- if {([string first "a" $flags] != -1)
- && ([string first "b" $flags] != -1)} {
- return 1
- }
- if {[regexp {\$|\+} $flags] == 1} {
- return 1
- }
- return 0
-}
-
-proc prepareCmd {flags re str vars noBraces} {
- # adjust the re to include to compile-time flag, where applicable
-
- if {[llength $flags] != 0} {
-
- # if re already has meta-syntax, skip this test
-
- if {[regexp {^(\(\?)|^(\*\*\*)} $re] == 1} {
- return -1
- }
- set re "\(?$flags\)$re"
- }
- if {$noBraces > 0} {
- set cmd "regexp -- $re $str $vars"
- } else {
- set cmd "regexp -- [list $re] [list $str] $vars"
- }
- return $cmd
-}
-
-proc convertTestLineJunk {currentLine len lineNum srcLineNum} {
-
- regsub -all {(?b)\\} $currentLine {\\\\} currentLine
- set re [lindex $currentLine 0]
- set flags [lindex $currentLine 1]
- set str [lindex $currentLine 2]
-
- # based on flags, decide whether to skip the test
-
- if {[findSkipFlag $flags]} {
- regsub -all {\[|\]|\(|\)|\{|\}|\#} $currentLine {\&} line
- set msg "\# skipping char mapping test from line $srcLineNum\n"
- append msg "print \{... skip test from line $srcLineNum: $line\}"
- return $msg
- }
-
- # perform mapping if '=' flag exists
-
- if {[regexp {=|>} $flags] == 1} {
- regsub -all {_} $currentLine {\\ } currentLine
- regsub -all {A} $currentLine {\\007} currentLine
- regsub -all {B} $currentLine {\\b} currentLine
- regsub -all {E} $currentLine {\\033} currentLine
- regsub -all {F} $currentLine {\\f} currentLine
- regsub -all {N} $currentLine {\\n} currentLine
- regsub -all {R} $currentLine {\\r} currentLine
- regsub -all {T} $currentLine {\\t} currentLine
- regsub -all {V} $currentLine {\\v} currentLine
- if {[regexp {=} $flags] == 1} {
- set re [lindex $currentLine 0]
- }
- set str [lindex $currentLine 2]
- }
- set flags [removeFlags $flags]
-
- # find the test result
-
- set numVars [expr $len - 3]
- set vars {}
- set vals {}
- set result 0
- set v 0
-
- if {[regsub {\*} "$flags" "" newFlags] == 1} {
- # an error is expected
-
- if {[string compare $str "EMPTY"] == 0} {
- # empty regexp is not an error
- # skip this test
-
- return "\# skipping the empty-re test from line $srcLineNum\n"
- }
- set flags $newFlags
- set result "1 \{[convertErrCode $str]\}"
- } elseif {$numVars > 0} {
- # at least 1 match is made
-
- if {[regexp {s} $flags] == 1} {
- set result {0 1}
- } else {
- while {$v < $numVars} {
- append vars " var($v)"
- append vals " \$var($v)"
- incr v
- }
- set result "0 \{1 [removeAts [lrange $currentLine 3 $len]]\}"
- }
- } else {
- # no match is made
-
- set result "0 0"
- }
-
- # adjust the re to include to compile-time flag, where applicable
-
- if {[llength $flags] != 0} {
-
- # if re already has meta-syntax, skip this test
-
- if {[regexp {^(\(\?)|^(\*\*\*)} $re] == 1} {
- return "\# skipping test with metasyntax from line $srcLineNum\n"
- }
- set re "\(?$flags\)$re"
- }
-
- # set up the test and write it to the output file
-
- set cmd "regexp -- [list $re] [list $str] $vars"
- set test "test regexp-1.$srcLineNum \{converted from line $srcLineNum\} \{\n"
- append test "\tcatch {unset var}\n"
- append test "\tlist \[catch \{ \n"
- append test "\t\tset match \[$cmd\] \n"
- append test "\t\tlist \$match $vals \n"
- append test "\t\} msg\] \$msg \n"
- append test "\} \{$result\} \n"
- return $test
-}
-
-# main
-
-if {$argc != 2} {
- puts "name of input and outfile reuqired"
- return
-}
-
-set inFileName [lindex $argv 0]
-set outFileName [lindex $argv 1]
-
-writeOutputFile [readInputFile] regexp