Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,41 @@
|
|||
package require Tcl 8.5
|
||||
if {$argc < 3} {error "usage: $argv0 ruleFile inputFile outputFile"}
|
||||
lassign $argv ruleFile inputFile outputFile
|
||||
|
||||
# Read the file of rules
|
||||
set rules {}
|
||||
set f [open $ruleFile]
|
||||
foreach line [split [read $f] \n[close $f]] {
|
||||
if {[string match "#*" $line] || $line eq ""} continue
|
||||
if {[regexp {^(.+)\s+->\s+(\.?)(.*)$} $line -> from final to]} {
|
||||
lappend rules $from $to [string compare "." $final] [string length $from]
|
||||
} else {
|
||||
error "Syntax error: \"$line\""
|
||||
}
|
||||
}
|
||||
|
||||
# Apply the rules
|
||||
set f [open $inputFile]
|
||||
set out [open $outputFile w]
|
||||
foreach line [split [read $f] \n[close $f]] {
|
||||
set any 1
|
||||
while {$any} {
|
||||
set any 0
|
||||
foreach {from to more fl} $rules {
|
||||
# If we match the 'from' pattern...
|
||||
if {[set idx [string first $from $line]] >= 0} {
|
||||
# Change for the 'to' replacement
|
||||
set line [string replace $line $idx [expr {$idx+$fl-1}] $to]
|
||||
|
||||
# Stop if we terminate, otherwise note that we've more work to do
|
||||
set any $more
|
||||
break; # Restart search for rules to apply
|
||||
}
|
||||
}
|
||||
#DEBUG# puts $line
|
||||
}
|
||||
|
||||
# Output the processed line
|
||||
puts $out $line
|
||||
}
|
||||
close $out
|
||||
Loading…
Add table
Add a link
Reference in a new issue