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 orient { variable yylval {} variable table variable rules variable token {} variable yycnt 0 variable yyerr 0 variable save_state 0 namespace export yylex } proc orient::YYABORT {} { return -code return 1 } proc orient::YYACCEPT {} { return -code return 0 } proc orient::YYERROR {} { variable yyerr set yyerr 1 } proc orient::yyclearin {} { variable token variable yycnt set token {} incr yycnt -1 } proc orient::yyerror {s} { puts stderr $s } proc orient::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 orient::unsetupvalues {numsyms} { for {set i 1} {$i <= $numsyms} {incr i} { upvar 1 $i y unset y } } array set orient::table { 0:258 shift 0:259 shift 0:260 shift 2:257 reduce 5:0,target 6 9:0 accept 8:257,target 12 0:261 shift 11:0 reduce 0:262 goto 4:257 reduce 0:264 goto 3:257,target 8 6:257 reduce 0:265 goto 8:257 reduce 0:265,target 11 6:0,target 7 10:257,target 2 2:0 reduce 6:0 reduce 0:264,target 10 6:257,target 7 0:X shift 0:Y shift 7:0,target 5 1:257,target 9 10:0,target 1 0:y,target 4 10:257 reduce 12:257 shift 8:0,target 12 0:x,target 3 3:0 reduce 10:263 goto 1:0,target 9 11:0,target 4 0:262,target 9 4:257,target 10 1:257 reduce 7:0 reduce 3:257 reduce 11:257,target 4 5:257 reduce 13:0 reduce 9:0,target 0 0:261,target 8 7:257 reduce 2:0,target 11 10:263,target 12 7:257,target 5 0:260,target 7 0:259,target 6 2:257,target 11 4:0 reduce 3:0,target 8 13:0,target 3 8:0 reduce 0:x shift 10:0 reduce 0:y shift 0:258,target 5 0:Y,target 2 5:257,target 6 4:0,target 10 11:257 reduce 1:0 reduce 0:X,target 1 12:257,target 13 5:0 reduce } array set orient::rules { 9,l 265 11,l 265 2,l 263 6,l 264 12,l 265 3,l 262 7,l 265 0,l 266 4,l 264 8,l 265 10,l 265 1,l 262 5,l 264 } array set orient::rules { 5,dc 1 0,dc 1 12,dc 1 8,dc 1 3,dc 3 10,dc 1 6,dc 1 1,dc 1 9,dc 1 4,dc 1 11,dc 1 7,dc 1 2,dc 0 } array set orient::rules { 2,e 1 7,line 28 10,line 31 4,line 23 1,line 19 9,line 30 12,line 33 6,line 25 3,line 20 8,line 29 11,line 32 5,line 24 2,line 19 } array set orient::lr1_table { 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}} 1 {{9 {0 257} 1}} 2 {{11 {0 257} 1}} 3 {{8 {0 257} 1}} 0,trans {{X 1} {Y 2} {x 3} {y 4} {258 5} {259 6} {260 7} {261 8} {262 9} {264 10} {265 11}} 4 {{10 {0 257} 1}} 1,trans {} 5 {{6 {0 257} 1}} 2,trans {} 6 {{7 {0 257} 1}} 3,trans {} 7 {{5 {0 257} 1}} 4,trans {} 8 {{12 {0 257} 1}} 5,trans {} 9 {{0 0 1}} 10 {{1 0 1} {3 0 1} {2 257 0}} 6,trans {} 11 {{4 {0 257} 1}} 12 {{3 0 2}} 7,trans {} 13 {{3 0 3}} 8,trans {} 10,trans {{263 12}} 9,trans {} 11,trans {} 12,trans {{257 13}} } array set orient::token_id_table { 264,line 22 265,title {} 261,line 14 257,t 0 y,t 0 257,line 7 262,t 1 X,line 29 266,t 1 259,title NONE 260,title OPEN y,title {} 266,line 34 error error 264,title {} y,line 30 error,line 17 258,t 0 263,line 19 X,t 0 error,title {} X X Y Y 263,t 1 259,line 12 260,line 13 258,title CLOSE x,title {} 263,title {} 257 STRING_ 258 CLOSE_ 259,t 0 259 NONE_ 260 OPEN_ 260,t 0 Y,t 0 261 XY_ 265,line 27 262 command 263 @PSEUDO1 257,title string 264 orient 264,t 1 x,line 28 265 orientation 266 start' 262,line 18 Y,title {} 0 {$} 0,t 0 262,title {} error,t 0 258,line 11 266,title {} Y,line 31 x x x,t 0 y y 261,t 0 265,t 1 X,title {} 261,title XY } proc orient::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 orient $1 ChangeOrient } 5 { PanZoomDialog } 6 { PanZoomDestroyDialog } 7 { set _ none } 8 { set _ x } 9 { set _ x } 10 { set _ y } 11 { set _ y } 12 { set _ xy } } 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 orient::yyerror {msg} { variable yycnt variable yy_current_buffer variable index_ ParserError $msg $yycnt $yy_current_buffer $index_ }