diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2018-06-20 17:31:39 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2018-06-20 17:31:39 (GMT) |
commit | 08ce7322f91b7ce101b1fdec438db11a33140100 (patch) | |
tree | 9d81ae637298a73a91f09a57b345bad877ca2f52 | |
parent | d8a46fb55ae9ce363612f91a453413533bbfa307 (diff) | |
download | blt-08ce7322f91b7ce101b1fdec438db11a33140100.zip blt-08ce7322f91b7ce101b1fdec438db11a33140100.tar.gz blt-08ce7322f91b7ce101b1fdec438db11a33140100.tar.bz2 |
add ds9 analysis send parser
-rw-r--r-- | ds9/library/analysis.tcl | 65 | ||||
-rw-r--r-- | ds9/library/source.tcl | 2 | ||||
-rw-r--r-- | ds9/parsers/analysissendlex.fcl | 23 | ||||
-rw-r--r-- | ds9/parsers/analysissendparser.tac | 42 |
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_ +} |