diff options
-rw-r--r-- | ds9/library/source.tcl | 2 | ||||
-rw-r--r-- | ds9/library/util.tcl | 9 | ||||
-rw-r--r-- | ds9/parsers/precisionlex.fcl | 20 | ||||
-rw-r--r-- | ds9/parsers/precisionparser.tac | 28 |
4 files changed, 59 insertions, 0 deletions
diff --git a/ds9/library/source.tcl b/ds9/library/source.tcl index 073618f..fe0220c 100644 --- a/ds9/library/source.tcl +++ b/ds9/library/source.tcl @@ -250,6 +250,8 @@ source $ds9(root)/library/plotparser.tcl source $ds9(root)/library/plotlex.tcl source $ds9(root)/library/prefsparser.tcl source $ds9(root)/library/prefslex.tcl +source $ds9(root)/library/precisionparser.tcl +source $ds9(root)/library/precisionlex.tcl source $ds9(root)/library/psparser.tcl source $ds9(root)/library/pslex.tcl source $ds9(root)/library/regionparser.tcl diff --git a/ds9/library/util.tcl b/ds9/library/util.tcl index d0c3c0b..7e2d948 100644 --- a/ds9/library/util.tcl +++ b/ds9/library/util.tcl @@ -1270,6 +1270,14 @@ proc ProcessPrecisionCmd {varname iname} { upvar $varname var upvar $iname i + global debug + if {$debug(tcl,parser)} { + precision::YY_FLUSH_BUFFER + precision::yy_scan_string [lrange $var $i end] + precision::yyparse + incr i [expr $precision::yycnt-1] + } else { + global pds9 set pds9(prec,linear) [lindex $var $i] incr i @@ -1284,6 +1292,7 @@ proc ProcessPrecisionCmd {varname iname} { set pds9(prec,arcsec) [lindex $var $i] PrefsPrecision } +} proc ProcessSendPrecisionCmd {proc id param} { global pds9 diff --git a/ds9/parsers/precisionlex.fcl b/ds9/parsers/precisionlex.fcl new file mode 100644 index 0000000..8a505d4 --- /dev/null +++ b/ds9/parsers/precisionlex.fcl @@ -0,0 +1,20 @@ +#tab zoomparser.tab.tcl + +%{ +%} + +#include defs.fin + +%% + +close {return $CLOSE_} +in {return $IN_} +fit {return $FIT_} +open {return $OPEN_} +out {return $OUT_} +to {return $TO_} + +#include numeric.fin +#include string.fin + +%% diff --git a/ds9/parsers/precisionparser.tac b/ds9/parsers/precisionparser.tac new file mode 100644 index 0000000..859a1d0 --- /dev/null +++ b/ds9/parsers/precisionparser.tac @@ -0,0 +1,28 @@ +%{ +%} + +#include numeric.tin +#include string.tin + +%start command + +%% + +#include numeric.trl + +command : precision + | precision {yyclearin; YYACCEPT} STRING_ + ; + +precision : INT_ INT_ INT_ INT_ INT_ INT_ {pds9CmdSet prec,linear $1; pds9CmdSet prec,deg $2; pds9CmdSet prec,hms $3;pds9CmdSet prec,dms $4; pds9CmdSet prec,arcmin $5; pds9CmdSet prec,arcsec $6 PrefsPrecision} + ; + +%% + +proc precision::yyerror {msg} { + variable yycnt + variable yy_current_buffer + variable index_ + + ParserError $msg $yycnt $yy_current_buffer $index_ +} |