#developing a series of regular exspressions that can be used
# to find specific text relating to a surface in a RIB file
#set line { Surface “defaultsurface” }
# basic atomic building blocks of regular exspressions .
#set SPACE {[\s]*}
#set STATEMENT {[\w]*}
#set statmentPattern $SPACE$STATEMENT$SPACE
#if {[regexp $statmentPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { 537 }
#set SPACE {[\s]*}
#set FLOAT {[\d]*}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { .537 }
#set SPACE {[\s]*}
#set FLOAT {[\d]*}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { .537 }
#set SPACE {[\s]*}
#set FLOAT {[.\d]*}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { -.537 }
#set SPACE {[\s]*}
#set NEG {[-]}
#set DECIMAL {[.]*}
#set FLOAT {[\d]*}
#set floatPattern $SPACE$NEG$DECIMAL$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
# the post . finds anything comment it out \.
#set line { .537 }
#set SPACE {[\s]*}
#set FLOAT {(\.[\d]*)}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { -.537 }
#set SPACE {[\s]*}
#set FLOAT {(-?\.[\d]*)}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { 2.5 }
#set SPACE {[\s]*}
#set FLOAT {(-?\.?[\d]*)}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
# either or
#set line { 537 }
#set SPACE {[\s]*}
#set FLOAT {([\d]*|\.[\d]*)}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { 5.37 }
#set SPACE {[\s]*}
#set FLOAT {(-?[\d]*\.?[\d]*)}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $floatPattern $line m0] ==1 } {
#puts “found $m0″
#}
#set line { ShadingRate 0.537 }
#set REMAINDER {(.)*}
#set SPACE {[\s]*}
#set STATEMENT {([\w]*)}
#set statmentPattern $SPACE$STATEMENT$SPACE$REMAINDER
#set FLOAT {(-?[\d]*\.?[\d]*)}
#set floatPattern $SPACE$FLOAT$SPACE
#if {[regexp $statmentPattern $line m0 m1 remainder] ==1 } {
#puts “input >$m0< found >$m1< remainder >$remainder< ”
#if { $m1 == “ShadingRate” } {
#if {[regexp $floatPattern $remainder m0 m1 remainder] ==1} {
#puts “name >$m1< remainder >$remainder< ”
#}
#match must look for the inital quatation
#{(\”[\w]*[\s]?[\w]*\”)}
#set line {Surface “float Ka” }
#set SPACE {[\s]*}
#set QUOTED {(“[\w]*[\s]?[\w]*”)}
#set quotePattern $SPACE$QUOTED$SPACE
#if {[regexp $quotePattern $line m0 m1 remainder ] ==0} {
#puts “no match”
#return
#}
#puts “match >$m1< ”
#if { 1 } {
#return
#}
#finding stuff with varblies
#set line {Surface “float Ka” }
#set SPACE {[\s]*}
#set QUOTED {(“([^"]*)”)}
#set quotePattern $SPACE$QUOTED$SPACE
#if {[regexp $quotePattern $line m0 m1 remainder ] ==0} {
##puts “no match”
#return
#}
#puts “match >$m1< ”
#if { 1 } {
#return
#}
#set line {Surface “float Ka” [10] }
set SPACE {[\s]*}
set REMAINDER {(.*)}
set NAME {([\w_]*)}
set QUOTE {\”}
set VALUE {\[([^]]*)\]}
set TYPE_NAME $NAME$SPACE$NAME
set QUOTED_TYPE_NAME $NAME$SPACE$NAME$QUOTE
#set quotedNamePattern $QUOTE$NAME$SPACE$NAME$QUOTE$REMAINDER
set paramaterPattern $QUOTED_TYPE_NAME$SPACE$VALUE$REMAINDER
set statementPattern $SPACE$NAME$SPACE$REMAINDER
set shaderNamePattern $QUOTE$NAME$QUOTE$REMAINDER
proc getStatement {line} {
global statementPattern
if {[regexp $statementPattern $line m0 m1 remainder]==0} {
return “”
}
return [list $m1 $remainder]
}
proc getShaderName {line} {
global shaderNamePattern
if {[regexp $shaderNamePattern $line m0 m1 remainder]==0} {
return “”
}
return [list $m1 $remainder]
}
set line {Surface “float Ka” [1] }
set result [getStatement $line]
puts $result