summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ds9/library/source.tcl2
-rw-r--r--ds9/library/util.tcl9
-rw-r--r--ds9/parsers/precisionlex.fcl20
-rw-r--r--ds9/parsers/precisionparser.tac28
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_
+}