summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2018-06-20 17:31:39 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2018-06-20 17:31:39 (GMT)
commit08ce7322f91b7ce101b1fdec438db11a33140100 (patch)
tree9d81ae637298a73a91f09a57b345bad877ca2f52
parentd8a46fb55ae9ce363612f91a453413533bbfa307 (diff)
downloadblt-08ce7322f91b7ce101b1fdec438db11a33140100.zip
blt-08ce7322f91b7ce101b1fdec438db11a33140100.tar.gz
blt-08ce7322f91b7ce101b1fdec438db11a33140100.tar.bz2
add ds9 analysis send parser
-rw-r--r--ds9/library/analysis.tcl65
-rw-r--r--ds9/library/source.tcl2
-rw-r--r--ds9/parsers/analysissendlex.fcl23
-rw-r--r--ds9/parsers/analysissendparser.tac42
4 files changed, 130 insertions, 2 deletions
diff --git a/ds9/library/analysis.tcl b/ds9/library/analysis.tcl
index eaba1fb..927ee02 100644
--- a/ds9/library/analysis.tcl
+++ b/ds9/library/analysis.tcl
@@ -1743,9 +1743,9 @@ proc AnalysisMessage {type message} {
}
switch -- [tk_messageBox -message $message -type $type] {
- ok {return 1}
+ ok -
yes {return 1}
- cancel {return 0}
+ cancel -
default {return 0}
}
}
@@ -1851,6 +1851,17 @@ proc AnalysisCmdLoad {} {
}
proc ProcessSendAnalysisCmd {proc id param sock fn} {
+ global parse
+ set parse(proc) $proc
+ set parse(id) $id
+ set parse(sock) $sock
+ set parse(fn) $fn
+
+ analysissend::YY_FLUSH_BUFFER
+ analysissend::yy_scan_string $param
+ analysissend::yyparse
+ return
+
global ianalysis
global ime
@@ -1897,3 +1908,53 @@ proc ProcessSendAnalysisCmd {proc id param sock fn} {
}
}
}
+
+proc AnalysisSendCmd {} {
+ global ianalysis
+
+ for {set ii 0} {$ii<$ianalysis(menu,count)} {incr ii} {
+ append result "\#$ii menu"
+ append result "\n$ianalysis(menu,$ii,item)"
+ append result "\n$ianalysis(menu,$ii,template)"
+ if {$ianalysis(menu,$ii,cmd) != {web}} {
+ append result "\nmenu"
+ append result "\n$ianalysis(menu,$ii,cmd)"
+ } else {
+ append result "\n$ianalysis(menu,$ii,cmd)"
+ append result "\n$ianalysis(menu,$ii,var)"
+ }
+ append result "\n\n"
+ }
+ for {set ii 0} {$ii<$ianalysis(bind,count)} {incr ii} {
+ set key [string range $ianalysis(bind,$ii,item) 1 1]
+ append result "\#$ii bind"
+ append result "\nbind key $ianalysis(bind,$ii,item)"
+ append result "\n$ianalysis(bind,$ii,template)"
+ append result "\nbind $key"
+ append result "\n$ianalysis(bind,$ii,cmd)"
+ append result "\n\n"
+ }
+
+ ProcessSendCmdResult {.ans} $result
+}
+
+proc AnalysisSendCmdEntry {txt} {
+ set result {}
+ AnalysisEntry $txt result
+ ProcessSendCmdTxt $result
+}
+
+proc AnalysisSendCmdMessage {type txt} {
+ ProcessSendCmdTxt [AnalysisMessage $type $txt]
+}
+
+proc AnalysisSendCmdTask {} {
+ global ianalysis
+
+ # invoke by name
+ for {set ii 0} {$ii<$ianalysis(menu,count)} {incr ii} {
+ append result "$ii $ianalysis(menu,$ii,item)\n"
+ }
+
+ ProcessSendCmdTxt $result
+}
diff --git a/ds9/library/source.tcl b/ds9/library/source.tcl
index c2a344a..0d19362 100644
--- a/ds9/library/source.tcl
+++ b/ds9/library/source.tcl
@@ -192,6 +192,8 @@ source $ds9(root)/library/alignparser.tcl
source $ds9(root)/library/alignlex.tcl
source $ds9(root)/library/analysisparser.tcl
source $ds9(root)/library/analysislex.tcl
+source $ds9(root)/library/analysissendparser.tcl
+source $ds9(root)/library/analysissendlex.tcl
source $ds9(root)/library/arrayparser.tcl
source $ds9(root)/library/arraylex.tcl
source $ds9(root)/library/backupparser.tcl
diff --git a/ds9/parsers/analysissendlex.fcl b/ds9/parsers/analysissendlex.fcl
new file mode 100644
index 0000000..448dd6f
--- /dev/null
+++ b/ds9/parsers/analysissendlex.fcl
@@ -0,0 +1,23 @@
+#tab analysissendparser.tab.tcl
+
+%{
+%}
+
+#include defs.fin
+
+%%
+
+entry {return $ENTRY_}
+message {return $MESSAGE_}
+mode {return $MODE_}
+task {return $TASK_}
+lock {return $LOCK_}
+
+ok {return $OK_}
+okcancel {return $OKCANCEL_}
+yesno {return $YESNO_}
+
+#include string.fin
+#include ws.fin
+
+%%
diff --git a/ds9/parsers/analysissendparser.tac b/ds9/parsers/analysissendparser.tac
new file mode 100644
index 0000000..d31871d
--- /dev/null
+++ b/ds9/parsers/analysissendparser.tac
@@ -0,0 +1,42 @@
+%{
+%}
+
+#include string.tin
+
+%token ENTRY_
+%token MESSAGE_
+%token MODE_
+%token TASK_
+%token LOCK_
+
+%token OK_
+%token OKCANCEL_
+%token YESNO_
+
+%start analysissend
+
+%%
+
+analysissend : {AnalysisSendCmd}
+ | ENTRY_ STRING_ {AnalysisSendCmdEntry $2}
+ | MESSAGE_ type STRING_ {AnalysisSendCmdMessage $2 $3}
+ | MODE_ {ProcessSendCmdGet ime task}
+ | TASK_ {AnalysisSendCmdTask}
+ | LOCK_ {ProcessSendCmdGet ime lock}
+ ;
+
+type : {set _ ok}
+ | OK_ {set _ ok}
+ | OKCANCEL_ {set _ okcancel}
+ | YESNO_ {set _ yesno}
+ ;
+
+%%
+
+proc analysissend::yyerror {msg} {
+ variable yycnt
+ variable yy_current_buffer
+ variable index_
+
+ ParserError $msg $yycnt $yy_current_buffer $index_
+}