package provide DS9 1.0 ###### # Begin autogenerated taccle (version 1.3) routines. # Although taccle 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/taccle for other details. ###### namespace eval mode { variable yylval {} variable table variable rules variable token {} variable yycnt 0 variable yyerr 0 variable save_state 0 namespace export yylex } proc mode::YYABORT {} { return -code return 1 } proc mode::YYACCEPT {} { return -code return 0 } proc mode::YYERROR {} { variable yyerr set yyerr 1 } proc mode::yyclearin {} { variable token variable yycnt set token {} incr yycnt -1 } proc mode::yyerror {s} { puts stderr $s } proc mode::setupvalues {stack pointer numsyms} { upvar 1 1 y set y {} for {set i 1} {$i <= $numsyms} {incr i} { upvar 1 $i y set y [lindex $stack $pointer] incr pointer } } proc mode::unsetupvalues {numsyms} { for {set i 1} {$i <= $numsyms} {incr i} { upvar 1 $i y unset y } } array set mode::table { 0:258 shift 5:0,target 8 0:260 shift 0:259 shift 2:257 reduce 15:0,target 4 9:0 reduce 8:257,target 11 0:261 shift 0:266,target 9 11:0 reduce 0:262 shift 4:257 reduce 0:263 shift 6:257 reduce 0:264 shift 3:257,target 6 0:265 shift 15:0 reduce 8:257 reduce 0:266 shift 15:257,target 4 0:267 shift 0:265,target 8 0:268 shift 6:0,target 9 0:270 goto 0:269 shift 10:257,target 13 2:0 reduce 0:272 goto 0:273 goto 6:0 reduce 6:257,target 9 0:264,target 7 7:0,target 10 1:257,target 5 17:0,target 3 12:0 reduce 10:0,target 13 0:263,target 6 10:257 reduce 0:273,target 15 12:257 reduce 14:271,target 16 9:257,target 12 14:257 reduce 8:0,target 11 3:0 reduce 1:0,target 5 16:257 shift 11:0,target 14 0:262,target 5 4:257,target 7 0:272,target 14 7:0 reduce 1:257 reduce 16:257,target 17 3:257 reduce 11:257,target 14 5:257 reduce 13:0 accept 9:0,target 12 0:261,target 4 7:257 reduce 2:0,target 16 12:0,target 15 14:271 goto 9:257 reduce 17:0 reduce 7:257,target 10 0:260,target 3 0:259,target 2 2:257,target 16 0:270,target 13 0:269,target 12 4:0 reduce 14:257,target 2 3:0,target 6 13:0,target 0 8:0 reduce 10:0 reduce 0:258,target 1 0:268,target 11 14:0 reduce 5:257,target 8 4:0,target 7 14:0,target 1 11:257 reduce 1:0 reduce 0:267,target 10 15:257 reduce 12:257,target 15 5:0 reduce } array set mode::rules { 9,l 273 11,l 273 15,l 273 2,l 271 6,l 273 12,l 273 16,l 273 3,l 270 7,l 273 13,l 273 0,l 274 4,l 272 8,l 273 10,l 273 14,l 273 1,l 270 5,l 273 } array set mode::rules { 5,dc 1 0,dc 1 12,dc 1 8,dc 1 3,dc 3 15,dc 1 10,dc 1 6,dc 1 1,dc 1 13,dc 1 9,dc 1 4,dc 1 16,dc 1 11,dc 1 7,dc 1 2,dc 0 14,dc 1 } array set mode::rules { 13,line 42 2,e 1 7,line 36 10,line 39 4,line 31 1,line 27 15,line 45 9,line 38 12,line 41 6,line 35 3,line 28 14,line 43 8,line 37 11,line 40 5,line 34 2,line 27 16,line 46 } array set mode::lr1_table { 17 {{3 0 3}} 13,trans {} 0 {{0 0 0} {1 0 0} {3 0 0} {4 {0 257} 0} {5 {0 257} 0} {6 {0 257} 0} {7 {0 257} 0} {8 {0 257} 0} {9 {0 257} 0} {10 {0 257} 0} {11 {0 257} 0} {12 {0 257} 0} {13 {0 257} 0} {14 {0 257} 0} {15 {0 257} 0} {16 {0 257} 0}} 14,trans {{271 16}} 1 {{5 {0 257} 1}} 15,trans {} 2 {{16 {0 257} 1}} 16,trans {{257 17}} 3 {{6 {0 257} 1}} 17,trans {} 0,trans {{258 1} {259 2} {260 3} {261 4} {262 5} {263 6} {264 7} {265 8} {266 9} {267 10} {268 11} {269 12} {270 13} {272 14} {273 15}} 4 {{7 {0 257} 1}} 1,trans {} 5 {{8 {0 257} 1}} 2,trans {} 6 {{9 {0 257} 1}} 3,trans {} 7 {{10 {0 257} 1}} 4,trans {} 8 {{11 {0 257} 1}} 5,trans {} 9 {{12 {0 257} 1}} 10 {{13 {0 257} 1}} 6,trans {} 11 {{14 {0 257} 1}} 7,trans {} 12 {{15 {0 257} 1}} 8,trans {} 13 {{0 0 1}} 10,trans {} 9,trans {} 14 {{1 0 1} {3 0 1} {2 257 0}} 11,trans {} 15 {{4 {0 257} 1}} 16 {{3 0 2}} 12,trans {} } array set mode::token_id_table { 264,line 17 270,t 1 269,t 0 265,title ROTATE 274,t 1 261,line 14 257,t 0 270,title {} 269,title 3D 273,line 33 257,line 7 262,t 0 274,title {} 270,line 26 269,line 22 259,title POINTER 260,title REGION 266,t 0 271,t 1 error error 264,title ZOOM 266,line 19 error,line 25 268,title EXAMINE 258,t 0 263,line 16 error,title {} 273,title {} 263,t 0 259,line 12 260,line 13 258,title NONE 272,line 30 267,t 0 263,title PAN 272,t 1 268,line 21 267,title CATALOG 257 STRING_ 258 NONE_ 259,t 0 259 POINTER_ 260 REGION_ 260,t 0 272,title {} 261 CROSSHAIR_ 265,line 18 262 COLORBAR_ 263 PAN_ 257,title string 264 ZOOM_ 264,t 0 265 ROTATE_ 262,line 15 266 CROP_ 267 CATALOG_ 0,t 0 0 {$} 262,title COLORBAR 268 EXAMINE_ 268,t 0 274,line 47 270 command 269 3D_ 271 @PSEUDO1 error,t 0 272 mode 258,line 11 273,t 1 273 item 266,title CROP 274 start' 271,line 27 271,title {} 261,t 0 267,line 20 265,t 0 261,title CROSSHAIR } proc mode::yyparse {} { variable yylval variable table variable rules variable token variable yycnt variable lr1_table variable token_id_table variable yyerr variable save_state set yycnt 0 set state_stack {0} set value_stack {{}} set token "" set accepted 0 set yyerr 0 set save_state 0 while {$accepted == 0} { set state [lindex $state_stack end] if {$token == ""} { set yylval "" set token [yylex] set buflval $yylval if {$token>0} { incr yycnt } } if {![info exists table($state:$token)] || $yyerr} { if {!$yyerr} { set save_state $state } # pop off states until error token accepted while {[llength $state_stack] > 0 && \ ![info exists table($state:error)]} { set state_stack [lrange $state_stack 0 end-1] set value_stack [lrange $value_stack 0 \ [expr {[llength $state_stack] - 1}]] set state [lindex $state_stack end] } if {[llength $state_stack] == 0} { set rr { } if {[info exists lr1_table($save_state,trans)] && [llength $lr1_table($save_state,trans)] >= 1} { foreach trans $lr1_table($save_state,trans) { foreach {tok_id nextstate} $trans { set ss $token_id_table($tok_id,title) if {$ss != {}} { append rr "$ss, " } } } } set rr [string trimleft $rr { }] set rr [string trimright $rr {, }] yyerror "parse error, expecting: $rr" return 1 } lappend state_stack [set state $table($state:error,target)] lappend value_stack {} # consume tokens until it finds an acceptable one while {![info exists table($state:$token)]} { if {$token == 0} { yyerror "end of file while recovering from error" return 1 } set yylval {} set token [yylex] set buflval $yylval } continue } switch -- $table($state:$token) { shift { lappend state_stack $table($state:$token,target) lappend value_stack $buflval set token "" } reduce { set rule $table($state:$token,target) set ll $rules($rule,l) if {[info exists rules($rule,e)]} { set dc $rules($rule,e) } else { set dc $rules($rule,dc) } set stackpointer [expr {[llength $state_stack]-$dc}] setupvalues $value_stack $stackpointer $dc set _ $1 set yylval [lindex $value_stack end] switch -- $rule { 2 { global ds9; if {!$ds9(init)} {YYERROR} else {yyclearin; YYACCEPT} } 4 { ProcessCmdSet current mode $1 ChangeMode } 5 { set _ none } 6 { set _ region } 7 { set _ crosshair } 8 { set _ colorbar } 9 { set _ pan } 10 { set _ zoom } 11 { set _ rotate } 12 { set _ crop } 13 { set _ catalog } 14 { set _ examine } 15 { set _ 3d } 16 { set _ region } } unsetupvalues $dc # pop off tokens from the stack if normal rule if {![info exists rules($rule,e)]} { incr stackpointer -1 set state_stack [lrange $state_stack 0 $stackpointer] set value_stack [lrange $value_stack 0 $stackpointer] } # now do the goto transition lappend state_stack $table([lindex $state_stack end]:$ll,target) lappend value_stack $_ } accept { set accepted 1 } goto - default { puts stderr "Internal parser error: illegal command $table($state:$token)" return 2 } } } return 0 } ###### # end autogenerated taccle functions ###### proc mode::yyerror {msg} { variable yycnt variable yy_current_buffer variable index_ ParserError $msg $yycnt $yy_current_buffer $index_ }