summaryrefslogtreecommitdiffstats
path: root/ds9
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2018-03-15 17:24:16 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2018-03-15 17:24:16 (GMT)
commit720c6f7b2a8513c433d09fad4d73b5a25e0baa52 (patch)
tree49cb9be41161f16b917be34eb6685ae936661ea9 /ds9
parent3bee48236745ecc6fe30d480bc2adcef49ea8e39 (diff)
downloadblt-720c6f7b2a8513c433d09fad4d73b5a25e0baa52.zip
blt-720c6f7b2a8513c433d09fad4d73b5a25e0baa52.tar.gz
blt-720c6f7b2a8513c433d09fad4d73b5a25e0baa52.tar.bz2
add ds9 grid parser
Diffstat (limited to 'ds9')
-rw-r--r--ds9/library/grid.tcl10
-rw-r--r--ds9/library/source.tcl2
-rw-r--r--ds9/parsers/gridlex.fcl61
-rw-r--r--ds9/parsers/gridparser.tac204
4 files changed, 277 insertions, 0 deletions
diff --git a/ds9/library/grid.tcl b/ds9/library/grid.tcl
index 083127d..139f24b 100644
--- a/ds9/library/grid.tcl
+++ b/ds9/library/grid.tcl
@@ -1138,6 +1138,16 @@ proc GridBackup {ch which} {
proc ProcessGridCmd {varname iname} {
upvar $varname var
+ upvar $iname ii
+
+ grid::YY_FLUSH_BUFFER
+ grid::yy_scan_string [lrange $var $ii end]
+ grid::yyparse
+ incr ii [expr $grid::yycnt-1]
+}
+
+proc oProcessGridCmd {varname iname} {
+ upvar $varname var
upvar $iname i
global grid
diff --git a/ds9/library/source.tcl b/ds9/library/source.tcl
index 53c605a..a4bad05 100644
--- a/ds9/library/source.tcl
+++ b/ds9/library/source.tcl
@@ -204,6 +204,8 @@ source $ds9(root)/library/dsssaoparser.tcl
source $ds9(root)/library/dsssaolex.tcl
source $ds9(root)/library/dssstsciparser.tcl
source $ds9(root)/library/dssstscilex.tcl
+source $ds9(root)/library/gridparser.tcl
+source $ds9(root)/library/gridlex.tcl
source $ds9(root)/library/headerparser.tcl
source $ds9(root)/library/headerlex.tcl
source $ds9(root)/library/nvssparser.tcl
diff --git a/ds9/parsers/gridlex.fcl b/ds9/parsers/gridlex.fcl
new file mode 100644
index 0000000..f69404d
--- /dev/null
+++ b/ds9/parsers/gridlex.fcl
@@ -0,0 +1,61 @@
+#tab gridparser.tab.tcl
+
+%{
+%}
+
+#include defs.fin
+
+%%
+
+analyis {return $ANALYSIS_}
+axes {return $AXES_}
+border {return $BORDER_}
+close {return $CLOSE_}
+color {return $COLOR_}
+def {return $DEF_}
+def1 {return $DEF1_}
+def2 {return $DEF2_}
+exterior {return $EXTERIOR_}
+format1 {return $FORMAT1_}
+format2 {return $FORMAT2_}
+gap {return $GAP_}
+gap1 {return $GAP1_}
+gap2 {return $GAP2_}
+gap3 {return $GAP3_}
+grid {return $GRID_}
+interior {return $INTERIOR_}
+label {return $LABELS_}
+labels {return $LABELS_}
+load {return $LOAD_}
+textlab {return $LABELS_}
+numlab {return $NUMERICS_}
+numbers {return $NUMBERS_}
+numeric {return $NUMERICS_}
+numerics {return $NUMERICS_}
+origin {return $ORIGIN_}
+open {return $OPEN_}
+publication {return $PUBLICATION_}
+reset {return $RESET_}
+save {return $SAVE_}
+sky {return $SKY_}
+skyformat {return $SKYFORMAT_}
+style {return $STYLE_}
+system {return $SYSTEM_}
+text {return $TEXT_}
+text1 {return $TEXT1_}
+text2 {return $TEXT2_}
+tick {return $TICKMARKS_}
+tickmark {return $TICKMARKS_}
+tickmarks {return $TICKMARKS_}
+title {return $TITLE_}
+type {return $TYPE_}
+vertical {return $VERTICAL_}
+view {return $VIEW_}
+width {return $WIDTH_}
+
+#include yesno.fin
+#include font.fin
+#include numeric.fin
+#include string.fin
+
+%%
diff --git a/ds9/parsers/gridparser.tac b/ds9/parsers/gridparser.tac
new file mode 100644
index 0000000..3679de3
--- /dev/null
+++ b/ds9/parsers/gridparser.tac
@@ -0,0 +1,204 @@
+%{
+%}
+
+#include yesno.tin
+#include font.tin
+#include numeric.tin
+#include string.tin
+
+%start command
+
+%token ANALYSIS_
+%token AXES_
+%token BORDER_
+%token COLOR_
+%token CLOSE_
+%token DEF_
+%token DEF1_
+%token DEF2_
+%token EXTERIOR_
+%token FORMAT1_
+%token FORMAT2_
+%token GAP_
+%token GAP1_
+%token GAP2_
+%token GAP3_
+%token GRID_
+%token INTERIOR_
+%token LABELS_
+%token LOAD_
+%token NUMBERS_
+%token NUMERICS_
+%token ORIGIN_
+%token OPEN_
+%token PUBLICATION_
+%token RESET_
+%token SAVE_
+%token SKY_
+%token SKYFORMAT_
+%token STYLE_
+%token SYSTEM_
+%token TEXT_
+%token TEXT1_
+%token TEXT2_
+%token TICKMARKS_
+%token TITLE_
+%token TYPE_
+%token VERTICAL_
+%token VIEW_
+%token WIDTH_
+
+%%
+
+#include yesno.trl
+#include font.trl
+#include numeric.trl
+
+command : grid
+ | grid {yyclearin; YYACCEPT} STRING_
+ ;
+
+grid : yesno {global grid; set grid(view) $1; GridUpdateCurrent}
+ | OPEN_ {GridDialog}
+ | CLOSE_ {GridDestroyDialog}
+ | TYPE_ type
+ | SYSTEM_
+ | SKY_
+ | SKYFORMAT_
+ | GRID_ gridgrid
+ | AXES_ axes
+ | FORMAT1_
+ | FORMAT2_
+ | TICKMARKS_ tickmarks
+ | BORDER_ border
+ | NUMERICS_ numerics
+ | TITLE_ title
+ | LABELS_ labels
+ | VIEW_ view
+ | RESET_ {GridResetDialog}
+ | LOAD_ STRING_ {FileLast gridfbox $2; GridLoad $2}
+ | SAVE_ STRING_ {FileLast gridfbox $2; GridSave $2}
+ ;
+
+type : typegrid {global grid; set grid(type) $1; GridUpdateCurrent}
+ # backward compatible
+ | AXES_ {global grid; set grid(axes,type) $1; GridUpdateCurrent}
+ # backward compatible
+ | NUMERICS_ {global grid; set grid(numlab,type) $1; GridUpdateCurrent}
+ ;
+
+typegrid : ANALYSIS_ {set _ analysis}
+ | PUBLICATION_ {set _ publication}
+ ;
+
+gridgrid : yesno
+ | COLOR_
+ | WIDTH_
+ | STYLE_
+ | GAP1_
+ | GAP2_
+ | GAP3_
+ ;
+
+axes : yesno
+ | COLOR_
+ | WIDTH_
+ | STYLE_
+ | TYPE_
+ | ORIGIN_
+ ;
+
+tickmarks : yesno
+ | COLOR_
+ | WIDTH_
+ | STYLE_
+ ;
+
+border : yesno
+ | COLOR_
+ | WIDTH_
+ | STYLE_
+ ;
+
+numerics : yesno
+ | FONT_ font {global grid; set grid(numlab,font) $2; GridUpdateCurrent}
+ | FONTSIZE_ INT_ {global grid; set grid(numlab,size) $2; GridUpdateCurrent}
+ | FONTWEIGHT_ fontweight {global grid; set grid(numlab,weight) $2; GridUpdateCurrent}
+ | FONTSLANT_ fontslant {global grid; set grid(numlab,slant) $2; GridUpdateCurrent}
+ | FONTSTYLE_ numlabfontstyle
+ | COLOR_ STRING_ {global grid; set grid(numlab,color) $2; GridUpdateCurrent}
+ | GAP1_ numeric {global grid; set grid(numlab,gap1) $2; GridUpdateCurrent}
+ | GAP2_ numeric {global grid; set grid(numlab,gap2) $2; GridUpdateCurrent}
+ | GAP3_ numeric {global grid; set grid(numlab,gap3) $2; GridUpdateCurrent}
+ | TYPE_ numlabtype {global grid; set grid(numlab,type) $2; GridUpdateCurrent}
+ | VERTICAL_ yesno {global grid; set grid(numlab,vertical) $2; GridUpdateCurrent}
+ ;
+
+numlabtype : INTERIOR_ {set _ interior}
+ | EXTERIOR_ {set _ exterior}
+ ;
+
+numlabfontstyle : NORMAL_ {global grid; set grid(numlab,weight) normal; set grid(numlab,slant) roman; GridUpdateCurrent}
+ | BOLD_ {global grid; set grid(numlab,weight) bold; set grid(numlab,slant) roman; GridUpdateCurrent}
+ | ITALIC_ {global grid; set grid(numlab,weight) normal; set grid(numlab,slant) italic; GridUpdateCurrent}
+ ;
+
+title : yesno {global grid; set grid(title) $2; GridUpdateCurrent}
+ | TEXT_ STRING_ {global grid; set grid(title,text) $2; GridUpdateCurrent}
+ | DEF_ yesno {global grid; set grid(title,def) $2; GridUpdateCurrent}
+ | GAP_ numeric {global grid; set grid(title,gap) $2; GridUpdateCurrent}
+ | FONT_ font {global grid; set grid(title,font) $2; GridUpdateCurrent}
+ | FONTSIZE_ INT_ {global grid; set grid(title,size) $2; GridUpdateCurrent}
+ | FONTWEIGHT_ fontweight {global grid; set grid(title,weight) $2; GridUpdateCurrent}
+ | FONTSLANT_ fontslant {global grid; set grid(title,slant) $2; GridUpdateCurrent}
+ | FONTSTYLE_ titlefontstyle
+ | COLOR_ STRING_ {global grid; set grid(title,color) $2; GridUpdateCurrent}
+ ;
+
+titlefontstyle : NORMAL_ {global grid; set grid(title,weight) normal; set grid(title,slant) roman; GridUpdateCurrent}
+ | BOLD_ {global grid; set grid(title,weight) bold; set grid(title,slant) roman; GridUpdateCurrent}
+ | ITALIC_ {global grid; set grid(title,weight) normal; set grid(title,slant) italic; GridUpdateCurrent}
+ ;
+
+labels : yesno {global grid; set grid(textlab) $2; GridUpdateCurrent}
+ | TEXT1_ STRING_ {global grid; set grid(textlab,text1) $2; GridUpdateCurrent}
+ | TEXT2_ STRING_ {global grid; set grid(textlab,text2) $2; GridUpdateCurrent}
+ | DEF1_ yesno {global grid; set grid(textlab,def1) $2; GridUpdateCurrent}
+ | DEF2_ yesno {global grid; set grid(textlab,def2) $2; GridUpdateCurrent}
+ | GAP1_ numeric {global grid; set grid(textlab,gap1) $2; GridUpdateCurrent}
+ | GAP2_ numeric {global grid; set grid(textlab,gap2) $2; GridUpdateCurrent}
+ | FONT_ font {global grid; set grid(textlab,font) $2; GridUpdateCurrent}
+ | FONTSIZE_ INT_ {global grid; set grid(textlab,size) $2; GridUpdateCurrent}
+ | FONTWEIGHT_ fontweight {global grid; set grid(textlab,weight) $2; GridUpdateCurrent}
+ | FONTSLANT_ fontslant {global grid; set grid(textlab,slant) $2; GridUpdateCurrent}
+ | FONTSTYLE_ labelsfontstyle
+ | COLOR_ STRING_ {global grid; set grid(textlab,color) $2; GridUpdateCurrent}
+ ;
+
+labelsfontstyle : NORMAL_ {global grid; set grid(textlab,weight) normal; set grid(textlab,slant) roman; GridUpdateCurrent}
+ | BOLD_ {global grid; set grid(textlab,weight) bold; set grid(textlab,slant) roman; GridUpdateCurrent}
+ | ITALIC_ {global grid; set grid(textlab,weight) normal; set grid(textlab,slant) italic; GridUpdateCurrent}
+ ;
+
+view : GRID_ yesno {global grid; set grid(grid) $2; GridUpdateCurrent}
+ | AXES_ viewaxes
+ | TITLE_ yesno {global grid; set grid(title) $2; GridUpdateCurrent}
+ | BORDER_ yesno {global grid; set grid(border) $2; GridUpdateCurrent}
+ | VERTICAL_ yesno {global grid; set grid(numlab,vertical) $2; GridUpdateCurrent}
+ ;
+
+viewaxes : yesno {global grid; set grid(axes) $2; GridUpdateCurrent}
+ | NUMBERS_ yesno {global grid; set grid(numlab) $2; GridUpdateCurrent}
+ | TICKMARKS_ yesno {global grid; set grid(tick) $2; GridUpdateCurrent}
+ | LABELS_ yesno {global grid; set grid(textlab) $2; GridUpdateCurrent}
+ ;
+
+%%
+
+proc grid::yyerror {msg} {
+ variable yycnt
+ variable yy_current_buffer
+ variable index_
+
+ ParserError $msg $yycnt $yy_current_buffer $index_
+}