package provide DS9 1.0 ###### # Begin autogenerated fickle (version 2.1) routines. # Although fickle itself is protected by the GNU Public License (GPL) # all user-supplied functions are protected by their respective # author's license. See http://mini.net/tcl/fickle for other details. ###### namespace eval analysis { variable yylval variable yytext {} variable yyleng 0 variable yyin stdin variable yyout stdout variable yy_current_buffer {} variable yylineno 1 variable index_ 0 variable done_ 0 } # ECHO copies yytext to the scanner's output if no arguments are # given. The scanner writes its ECHO output to the yyout global # (default, stdout), which may be redefined by the user simply by # assigning it to some other channel. # -- from the flex(1) man page proc analysis::ECHO {{s ""}} { variable yytext variable yyout if {$s == ""} { puts -nonewline $yyout $yytext } else { puts -nonewline $yyout $s } } # YY_FLUSH_BUFFER flushes the scanner's internal buffer so that the # next time the scanner attempts to match a token, it will first # refill the buffer using YY_INPUT. # -- from the flex(1) man page proc analysis::YY_FLUSH_BUFFER {} { variable yy_current_buffer variable index_ variable done_ set yy_current_buffer "" set index_ 0 set done_ 0 } # yyrestart(new_file) may be called to point yyin at the new input # file. The switch-over to the new file is immediate (any previously # buffered-up input is lost). Note that calling yyrestart with yyin # as an argument thus throws away the current input buffer and # continues scanning the same input file. # -- from the flex(1) man page proc analysis::yyrestart {new_file} { variable yyin set yyin $new_file YY_FLUSH_BUFFER } # The nature of how it gets its input can be controlled by defining # the YY_INPUT macro. YY_INPUT's calling sequence is # "YY_INPUT(buf,result,max_size)". Its action is to place up to # max_size characters in the character array buf and return in the # integer variable result either the number of characters read or the # constant YY_NULL (0 on Unix systems) to indicate EOF. The default # YY_INPUT reads from the global file-pointer "yyin". # -- from the flex(1) man page proc analysis::YY_INPUT {buf result max_size} { variable yyin upvar $result ret_val upvar $buf new_data if {$yyin != ""} { set new_data [read $yyin $max_size] set ret_val [string length $new_data] } else { set new_data "" set ret_val 0 } } # yy_scan_string sets up input buffers for scanning in-memory # strings instead of files. Note that switching input sources does # not change the start condition. # -- from the flex(1) man page proc analysis::yy_scan_string {str} { variable yy_current_buffer variable yyin append yy_current_buffer $str set yyin "" } # unput(c) puts the character c back onto the input stream. It will # be the next character scanned. # -- from the flex(1) man page proc analysis::unput {c} { variable yy_current_buffer variable index_ set s [string range $yy_current_buffer 0 [expr {$index_ - 1}]] append s $c set yy_current_buffer [append s [string range $yy_current_buffer $index_ end]] } # Returns all but the first n characters of the current token back to # the input stream, where they will be rescanned when the scanner # looks for the next match. yytext and yyleng are adjusted # appropriately. # -- from the flex(1) man page proc analysis::yyless {n} { variable yy_current_buffer variable index_ variable yytext variable yyleng set s [string range $yy_current_buffer 0 [expr {$index_ - 1}]] append s [string range $yytext $n end] set yy_current_buffer [append s [string range $yy_current_buffer $index_ end]] set yytext [string range $yytext 0 [expr {$n - 1}]] set yyleng [string length $yytext] } # input() reads the next character from the input stream. # -- from the flex(1) man page proc analysis::input {} { variable yy_current_buffer variable index_ variable done_ if {[string length $yy_current_buffer] - $index_ < 1024} { set new_buffer "" set new_buffer_size 0 if {$done_ == 0} { YY_INPUT new_buffer new_buffer_size 1024 append yy_current_buffer $new_buffer if {$new_buffer_size == 0} { set done_ 1 } } if $done_ { if {[string length $yy_current_buffer] - $index_ == 0} { return {} } } } set c [string index $yy_current_buffer $index_] incr index_ return $c } ###### # autogenerated yylex function created by fickle ###### # Whenever yylex() is called, it scans tokens from the global input # file yyin (which defaults to stdin). It continues until it either # reaches an end-of-file (at which point it returns the value 0) or # one of its actions executes a return statement. # -- from the flex(1) man page proc analysis::yylex {} { variable yylval variable yytext variable yylineno variable yyleng variable yy_current_buffer variable yy_flex_debug variable index_ variable done_ variable state_table_ set INT_ 257 set STRING_ 258 set CLEAR_ 259 set LOAD_ 260 set MESSAGE_ 261 set PLOT_ 262 set STDIN_ 263 set TASK_ 264 set TEXT_ 265 set OK_ 266 set OKCANCEL_ 267 set RETRYCANCEL_ 268 set YESNO_ 269 set YESNOCANCEL_ 270 set XY_ 271 set XYEX_ 272 set XYEY_ 273 set XYEXEY_ 274 while {1} { if {[string length $yy_current_buffer] - $index_ < 1024} { if {$done_ == 0} { set buffer_size 0 set new_buffer "" YY_INPUT new_buffer buffer_size 1024 append yy_current_buffer $new_buffer if {$buffer_size == 0 && \ [string length $yy_current_buffer] - $index_ == 0} { set done_ 1 } } if $done_ { if {[string length $yy_current_buffer] - $index_ == 0} { break } } } set yyleng 0 set matched_rule -1 # rule 0: clear if {[regexp -start $index_ -indices -line -nocase -- {\A(clear)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 0 } # rule 1: load if {[regexp -start $index_ -indices -line -nocase -- {\A(load)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 1 } # rule 2: message if {[regexp -start $index_ -indices -line -nocase -- {\A(message)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 2 } # rule 3: plot if {[regexp -start $index_ -indices -line -nocase -- {\A(plot)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 3 } # rule 4: stdin if {[regexp -start $index_ -indices -line -nocase -- {\A(stdin)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 4 } # rule 5: task if {[regexp -start $index_ -indices -line -nocase -- {\A(task)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 5 } # rule 6: text if {[regexp -start $index_ -indices -line -nocase -- {\A(text)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 6 } # rule 7: ok if {[regexp -start $index_ -indices -line -nocase -- {\A(ok)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 7 } # rule 8: okcancel if {[regexp -start $index_ -indices -line -nocase -- {\A(okcancel)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 8 } # rule 9: retrycancel if {[regexp -start $index_ -indices -line -nocase -- {\A(retrycancel)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 9 } # rule 10: yesno if {[regexp -start $index_ -indices -line -nocase -- {\A(yesno)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 10 } # rule 11: yesnocancel if {[regexp -start $index_ -indices -line -nocase -- {\A(yesnocancel)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 11 } # rule 12: xy if {[regexp -start $index_ -indices -line -nocase -- {\A(xy)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 12 } # rule 13: xyex if {[regexp -start $index_ -indices -line -nocase -- {\A(xyex)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 13 } # rule 14: xyey if {[regexp -start $index_ -indices -line -nocase -- {\A(xyey)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 14 } # rule 15: xyexey if {[regexp -start $index_ -indices -line -nocase -- {\A(xyexey)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 15 } # rule 16: [+-]?{D}+ if {[regexp -start $index_ -indices -line -nocase -- {\A([+-]?([0-9])+)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 16 } # rule 17: \"[^\"]*\" if {[regexp -start $index_ -indices -line -nocase -- {\A(\"[^\"]*\")} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 17 } # rule 18: \'[^\']*\' if {[regexp -start $index_ -indices -line -nocase -- {\A(\'[^\']*\')} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 18 } # rule 19: \{[^\}]*\} if {[regexp -start $index_ -indices -line -nocase -- {\A(\{[^\}]*\})} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 19 } # rule 20: \S+\S+ if {[regexp -start $index_ -indices -line -nocase -- {\A(\S+\S+)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 20 } # rule 21: \s if {[regexp -start $index_ -indices -line -nocase -- {\A(\s)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 21 } # rule 22: . if {[regexp -start $index_ -indices -line -nocase -- {\A(.)} $yy_current_buffer match] > 0 && \ [lindex $match 1] - $index_ + 1 > $yyleng} { set yytext [string range $yy_current_buffer $index_ [lindex $match 1]] set yyleng [string length $yytext] set matched_rule 22 } if {$matched_rule == -1} { set yytext [string index $yy_current_buffer $index_] set yyleng 1 } incr index_ $yyleng # workaround for Tcl's circumflex behavior if {[string index $yytext end] == "\n"} { set yy_current_buffer [string range $yy_current_buffer $index_ end] set index_ 0 } set numlines [expr {[llength [split $yytext "\n"]] - 1}] switch -- $matched_rule { 0 { return $CLEAR_ } 1 { return $LOAD_ } 2 { return $MESSAGE_ } 3 { return $PLOT_ } 4 { return $STDIN_ } 5 { return $TASK_ } 6 { return $TEXT_ } 7 { return $OK_ } 8 { return $OKCANCEL_ } 9 { return $RETRYCANCEL_ } 10 { return $YESNO_ } 11 { return $YESNOCANCEL_ } 12 { return $XY } 13 { return $XYEX } 14 { return $XYEY } 15 { return $XYEXEY } 16 { set yylval $yytext; return $INT_ } 17 { set yylval [string range $yytext 1 end-1]; return $STRING_ } 18 { set yylval [string range $yytext 1 end-1]; return $STRING_ } 19 { set yylval [string range $yytext 1 end-1]; return $STRING_ } 20 { set yylval $yytext; return $STRING_ } 21 { # ignore whitespace } 22 { set yylval $yytext; return $yylval } default { puts stderr "unmatched token: $yytext"; exit -1 } } incr yylineno $numlines } return 0 } ###### # end autogenerated fickle functions ######