genstat.py lexer example
Example code file from GenStat Release 10 documentation.
" Example DGRA-7: Drawing a weather map
This example draws a map of Great Britain with wind speed and
direction indicated at various points."
FILEREAD [NAME='%gendir%/examples/DGRA-7.DAT'] X,Y
XAXIS 1; LOWER=0; UPPER=7000; MARK=!(0,1000...7000)
YAXIS 1; LOWER=0; UPPER=10000; MARK=!(0,1000...10000)
FRAME [GRID=xy] 1; YLOWER=0; YUPPER=1; XLOWER=0; XUPPER=0.7
PEN 1; SYMBOL=0; METHOD=open; JOIN=given; LINESTYLE=1
DGRAPH [KEYWINDOW=0; TITLE='Wind speed'] Y; X
" Add arrows of different sizes and angles at different places"
DELETE [REDEFINE=yes] Y,X
SCALAR N,P; 35,5 " no. units, no. points in shapes "
MATRIX [ROWS=P; COLUMNS=N] XX,YY
DIAGONAL [ROWS=N] Size
POINTER [NVALUES=!T(X,Y)] At,Shape
MATRIX [ROWS=1; COLUMNS=N] Angle,At[]
MATRIX [ROWS=P; COLUMNS=1] Onep,Shape[]; VALUES=!((1)#P),(*)2
READ Shape[]
0.0 0.0
0.0 1.0
-0.25 0.75
0.0 1.0
0.25 0.75 :
OPEN '%gendir%/examples/DGRA-7A.DAT'; CHANNEL=data7
READ [CHANNEL=data7] At[],Size,Angle
CLOSE data7
CALC Rad = ARCCOS(0.5)/60.0
CALC XX,YY = (Shape['X','Y']*+COS(Angle*Rad)+ \
(-1,+1)*Shape['Y','X']*+SIN(Angle*Rad))*+(Size)*6 \
+Onep*+At['X','Y']
VARIATE [P] Xg[1...N],Yg[1...N]
CALC Xg[1...N] = XX$[*;1...N]
CALC Yg[1...N] = YY$[*;1...N]
PEN 1; LINESTYLE=1; SYMBOL=0; METHOD=line; JOIN=given; CLINE=2
DGRAPH [SCREEN=keep; KEYWINDOW=0] Yg[]; Xg[]; PEN=1
"
PEN 1; LINE=1; CLINE=2; ROT=RADIAN(!(#Angle)); SIZE=!(#Size)/10; SYMBOL=Shape; METH=point; JOIN=given
DGRAPH [SCREEN=keep; KEYWINDOW=0] At['Y']; At['X']; PEN=1"
genstat.py/Example.gen 