#! /bin/sh
#next line is executed by sh, not by Tcl \
   exec tclsh $0 ${1+"$@"}
#--------------------------------------------------------------------------
# This is the SICS syntax checker for the TOPSI diffractometer
#
# Mark Koennecke, March 2003
#--------------------------------------------------------------------------
source /data/lnslib/bin/sicscheck/sicssyntaxlib.tcl

#------------------------- define TOPSI motors and aliases
sicsSyntaxMap d1r       syntaxMotor
sicsSyntaxMap d1l       syntaxMotor
sicsSyntaxMap d2r       syntaxMotor
sicsSyntaxMap d2l       syntaxMotor
sicsSyntaxMap d3r       syntaxMotor
sicsSyntaxMap d3l       syntaxMotor
sicsSyntaxMap dxt       syntaxMotor
sicsSyntaxMap dxb       syntaxMotor
sicsSyntaxMap utz       syntaxMotor
sicsSyntaxMap uty       syntaxMotor
sicsSyntaxMap sth       syntaxMotor
sicsSyntaxMap stt       syntaxMotor
sicsSyntaxMap stx       syntaxMotor
sicsSyntaxMap sty       syntaxMotor
sicsSyntaxMap sgx       syntaxMotor
sicsSyntaxMap sgy       syntaxMotor
sicsSyntaxMap utt       syntaxMotor
sicsSyntaxMap scx       syntaxMotor
sicsSyntaxMap scy       syntaxMotor
sicsSyntaxMap po1       syntaxMotor
sicsSyntaxMap po2       syntaxMotor
sicsSyntaxMap mth       syntaxMotor
sicsSyntaxMap mtt       syntaxMotor
sicsSyntaxMap mtx       syntaxMotor
sicsSyntaxMap mty       syntaxMotor
sicsSyntaxMap mgx       syntaxMotor
sicsSyntaxMap mfv       syntaxMotor
sicsSyntaxMap d1b       syntaxMotor
sicsSyntaxMap d2b       syntaxMotor
sicsSyntaxMap d3b       syntaxMotor
sicsSyntaxMap d1t       syntaxMotor
sicsSyntaxMap d2t       syntaxMotor
sicsSyntaxMap d3t       syntaxMotor
#------------ aliases
sicsSyntaxMap s1r       syntaxMotor
sicsSyntaxMap s1l       syntaxMotor
sicsSyntaxMap s2r       syntaxMotor
sicsSyntaxMap s2l       syntaxMotor
sicsSyntaxMap s3r       syntaxMotor
sicsSyntaxMap s3l       syntaxMotor
sicsSyntaxMap a6        syntaxMotor
sicsSyntaxMap a5        syntaxMotor
sicsSyntaxMap a3        syntaxMotor
sicsSyntaxMap som       syntaxMotor
sicsSyntaxMap th        syntaxMotor
sicsSyntaxMap om        syntaxMotor
sicsSyntaxMap a4        syntaxMotor
sicsSyntaxMap s2t       syntaxMotor
sicsSyntaxMap tth       syntaxMotor
sicsSyntaxMap 2t        syntaxMotor
sicsSyntaxMap stu       syntaxMotor
sicsSyntaxMap stl       syntaxMotor
sicsSyntaxMap sgu       syntaxMotor
sicsSyntaxMap sgl       syntaxMotor
sicsSyntaxMap mgu       syntaxMotor
sicsSyntaxMap sch       syntaxMotor
sicsSyntaxMap sph       syntaxMotor
sicsSyntaxMap pol       syntaxMotor
sicsSyntaxMap ana       syntaxMotor
sicsSyntaxMap a1        syntaxMotor
sicsSyntaxMap mom       syntaxMotor
sicsSyntaxMap a2        syntaxMotor
sicsSyntaxMap m2t       syntaxMotor
sicsSyntaxMap mtu       syntaxMotor
sicsSyntaxMap mtl       syntaxMotor
sicsSyntaxMap mcv       syntaxMotor
sicsSyntaxMap sttl      syntaxMotor
sicsSyntaxMap u2t       syntaxMotor

#------------ define TOPSI counters
sicsSyntaxMap counter syntaxCounter

#------------ define TOPSI variables
sicsSyntaxMap title        syntaxTextPar
sicsSyntaxMap user         syntaxTextPar
sicsSyntaxMap collimation  syntaxTextPar
sicsSyntaxMap sample       syntaxTextPar
sicsSyntaxMap comment1     syntaxTextPar
sicsSyntaxMap comment2     syntaxTextPar
sicsSyntaxMap comment3     syntaxTextPar
sicsSyntaxMap fax          syntaxTextPar
sicsSyntaxMap email        syntaxTextPar
sicsSyntaxMap sample       syntaxTextPar
sicsSyntaxMap lambda       syntaxNumPar

#----------- define TOPSI environment
sicsSyntaxMap temperature evSyntax
sicsSyntaxMap tt          evSyntax

#---------- define TOPSI auxiliary
sicsSyntaxMap beam    syntaxDummy
sicsSyntaxMap o2t     syntaxNumPar
sicsSyntaxMap o2tl    syntaxNumPar
sicsSyntaxMap o2u     syntaxNumPar
sicsSyntaxMap ttc     syntaxTextPar
sicsSyntaxMap sttc    syntaxTextPar
sicsSyntaxMap sef     syntaxTextPar
sicsSyntaxMap remote  syntaxTextPar

#------------------------------------------------------------------------
# some strange TOPSI commands with 3 numeric parameters
#-----------------------------------------------------------------------
proc dah {w1 w2 w3} {
    if { [syntaxNumeric $w1] != 1 } {
	error "ERROR: expected numeric w1, got $w1"
    }
    if { [syntaxNumeric $w2] != 1 } {
	error "ERROR: expected numeric w2, got $w2"
    }
    if { [syntaxNumeric $w3] != 1 } {
	error "ERROR: expected numeric w3, got $w3"
    }
}
proc dav {w1 w2 w3} {
    dah $w1 $w2 $w3
}

#--------- Main checking stuff
syntaxLoadSICS /data/lnslib/data/TOPSI/2003/topsistatus.tcl

if { $argc < 1} {
	puts stdout "Usage: \n\ttopsicheck filename"
	exit 0
}
set filename [lindex $argv 0]
lappend fileList [file tail $filename]
puts stdout "Syntax checking --> $filename <-- ........."
source $filename
puts stdout "If this completed without errors the likelihoof of your script"
puts stdout "executing properly on the instrument has increased significantly"
exit 1
 