From 96ec6fa281103609e8e2b70ff9311d78ada35a82 Mon Sep 17 00:00:00 2001 From: William Joye Date: Mon, 14 May 2018 17:18:44 -0400 Subject: add ds9 irafalign parser --- ds9/library/source.tcl | 2 ++ ds9/library/util.tcl | 9 +++++++++ ds9/parsers/irafalignlex.fcl | 13 +++++++++++++ ds9/parsers/irafalignparser.tac | 28 ++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 ds9/parsers/irafalignlex.fcl create mode 100644 ds9/parsers/irafalignparser.tac diff --git a/ds9/library/source.tcl b/ds9/library/source.tcl index a249248..351c561 100644 --- a/ds9/library/source.tcl +++ b/ds9/library/source.tcl @@ -242,6 +242,8 @@ source $ds9(root)/library/iconifyparser.tcl source $ds9(root)/library/iconifylex.tcl source $ds9(root)/library/iisparser.tcl source $ds9(root)/library/iislex.tcl +source $ds9(root)/library/irafalignparser.tcl +source $ds9(root)/library/irafalignlex.tcl source $ds9(root)/library/lockparser.tcl source $ds9(root)/library/locklex.tcl source $ds9(root)/library/magnifierparser.tcl diff --git a/ds9/library/util.tcl b/ds9/library/util.tcl index f3f44d7..f2760cc 100644 --- a/ds9/library/util.tcl +++ b/ds9/library/util.tcl @@ -1376,10 +1376,19 @@ proc ProcessIRAFAlignCmd {varname iname} { upvar $varname var upvar $iname i + global debug + if {$debug(tcl,parser)} { + irafalign::YY_FLUSH_BUFFER + irafalign::yy_scan_string [lrange $var $i end] + irafalign::yyparse + incr i [expr $irafalign::yycnt-1] + } else { + global pds9 set pds9(iraf) [FromYesNo [lindex $var $i]] PrefsIRAFAlign } +} proc ProcessSendIRAFAlignCmd {proc id param} { global pds9 diff --git a/ds9/parsers/irafalignlex.fcl b/ds9/parsers/irafalignlex.fcl new file mode 100644 index 0000000..285abea --- /dev/null +++ b/ds9/parsers/irafalignlex.fcl @@ -0,0 +1,13 @@ +#tab irafalignparser.tab.tcl + +%{ +%} + +#include defs.fin + +%% + +#include yesno.fin +#include string.fin + +%% diff --git a/ds9/parsers/irafalignparser.tac b/ds9/parsers/irafalignparser.tac new file mode 100644 index 0000000..1a63dca --- /dev/null +++ b/ds9/parsers/irafalignparser.tac @@ -0,0 +1,28 @@ +%{ +%} + +#include yesno.tin +#include string.tin + +%start command + +%% + +#include yesno.trl + +command : irafalign + | irafalign {yyclearin; YYACCEPT} STRING_ + ; + +irafalign : yesno {Pds9CmdSet irafalign $1} + ; + +%% + +proc irafalign::yyerror {msg} { + variable yycnt + variable yy_current_buffer + variable index_ + + ParserError $msg $yycnt $yy_current_buffer $index_ +} -- cgit v0.12