From ab5d797bf637dcb0a901717a458fc091bd7d570b Mon Sep 17 00:00:00 2001 From: William Joye Date: Wed, 7 Mar 2018 14:21:58 -0500 Subject: update ds9 dsssao parser --- ds9/library/sao.tcl | 12 ++++++ ds9/library/source.tcl | 2 + ds9/parsers/dsssaolex.fcl | 26 +++++++++++++ ds9/parsers/dsssaoparser.tac | 87 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 ds9/parsers/dsssaolex.fcl create mode 100644 ds9/parsers/dsssaoparser.tac diff --git a/ds9/library/sao.tcl b/ds9/library/sao.tcl index d813598..c918ebd 100644 --- a/ds9/library/sao.tcl +++ b/ds9/library/sao.tcl @@ -145,6 +145,18 @@ taken with the UK Schmidt. proc ProcessSAOCmd {varname iname} { upvar $varname var + upvar $iname ii + + SAODialog + + dsssao::YY_FLUSH_BUFFER + dsssao::yy_scan_string [lrange $var $ii end] + dsssao::yyparse + incr ii [expr $dsssao::yycnt-1] +} + +proc oProcessSAOCmd {varname iname} { + upvar $varname var upvar $iname i SAODialog diff --git a/ds9/library/source.tcl b/ds9/library/source.tcl index 6633edb..6ed3203 100644 --- a/ds9/library/source.tcl +++ b/ds9/library/source.tcl @@ -190,6 +190,8 @@ source $ds9(root)/library/xpa.tcl source $ds9(root)/library/twomassparser.tcl source $ds9(root)/library/twomasslex.tcl +source $ds9(root)/library/dsssaoparser.tcl +source $ds9(root)/library/dsssaolex.tcl source $ds9(root)/library/panparser.tcl source $ds9(root)/library/panlex.tcl source $ds9(root)/library/zoomparser.tcl diff --git a/ds9/parsers/dsssaolex.fcl b/ds9/parsers/dsssaolex.fcl new file mode 100644 index 0000000..36aae4a --- /dev/null +++ b/ds9/parsers/dsssaolex.fcl @@ -0,0 +1,26 @@ +#tab twomassparser.tab.tcl + +%{ +%} + +#include defs.fin + +%% + +close {return $CLOSE_} +coord {return $COORD_} +crosshair {return $CROSSHAIR_} +current {return $CURRENT_} +frame {return $FRAME_} +name {return $NAME_} +new {return $NEW_} +open {return $OPEN_} +save {return $SAVE_} +size {return $SIZE_} +update {return $UPDATE_} + +#include yesno.fin +#include coords.fin +#include base.fin + +%% diff --git a/ds9/parsers/dsssaoparser.tac b/ds9/parsers/dsssaoparser.tac new file mode 100644 index 0000000..3adff82 --- /dev/null +++ b/ds9/parsers/dsssaoparser.tac @@ -0,0 +1,87 @@ +%{ +%} + +#include yesno.tin +#include coords.tin +#include base.tin + +%start command + +%token CLOSE_ +%token COORD_ +%token CROSSHAIR_ +%token CURRENT_ +%token FRAME_ +%token NAME_ +%token NEW_ +%token OPEN_ +%token UPDATE_ +%token SAVE_ +%token SIZE_ + +%% + +#include yesno.trl +#include coords.trl +#include base.trl + +command : dsssao + | dsssao {yyclearin; YYACCEPT} CMD_ + ; + +deg : {set _ degrees} + | DEGREES_ {set _ degrees} + ; + +sex : {set _ sexagesimal} + | SEXAGESIMAL_ {set _ sexagesimal} + ; + +coordOpt : + | WCS_ + | FK5_ + | WCS_ FK5_ + ; + +sizeOpt : {set _ degrees} + | skyformat {set _ $1} + ; + +# COORD_ is depricated +# NAME_ is depricated +# new optional WCS_ FK5_, does nothing +# SIZE_ default is DEGREES_ + +dsssao : {IMGSVRApply dsao 1} + | OPEN_ {} + | CLOSE_ {ARDestroy dsao} + | STRING_ {global dsao; set dsao(name) $1; IMGSVRApply dsao 1} + | numeric numeric coordOpt {global dsao; set dsao(x) $1; set dsao(y) $2; set dsao(skyformat) degrees; set dsao(skyformat,msg) degress; IMGSVRApply dsao 1} + | SEXSTR_ SEXSTR_ coordOpt {global dsao; set dsao(x) $1; set dsao(y) $2; set dsao(skyformat) sexagesimal; set dsao(skyformat,msg) sexagesimal; IMGSVRApply dsao 1} + | SIZE_ numeric numeric sizeOpt {global dsao; set dsao(width) $2; set dsao(height) $3; set dsao(rformat) $4; set dsao(rformat,msg) $4} + | SAVE_ yesno {global dsao; set dsao(save) $2} + | FRAME_ frame {global dsao; set dsao(mode) $2} + | UPDATE_ update + + | COORD_ numeric numeric deg {global dsao; set dsao(x) $2; set dsao(y) $3; set dsao(skyformat) $4; set dsao(skyformat,msg) $4; IMGSVRApply dsao 1} + | COORD_ SEXSTR_ SEXSTR_ sex {global dsao; set dsao(x) $2; set dsao(y) $3; set dsao(skyformat) $4; set dsao(skyformat,msg) $4; IMGSVRApply dsao 1} + | NAME_ STRING_ {global dsao; set dsao(name) $2; IMGSVRApply dsao 1} + ; + +update : FRAME_ {IMGSVRUpdate dsao; IMGSVRApply dsao 1} + | CROSSHAIR_ {IMGSVRCrosshair dsao; IMGSVRApply dsao 1} + ; + +frame : NEW_ {set _ new} + | CURRENT_ {set _ current} + ; + +%% + +proc dsssao::yyerror {msg} { + variable yycnt + variable yy_current_buffer + variable index_ + + ParserError $msg $yycnt $yy_current_buffer $index_ +} -- cgit v0.12