Add check bison version in configure.ac file.
To build correctly matiec we need bison greater or equals than 2.4 version.
Now the "configure" script is able to check if system has correctly requirements.
(* Test whether the keyword XXXX may be used as an identifier for:
* STEP, ACTION and TRANSITION name/identifier
*
* The XXXX names in the following code are merely a placeholder.
* They will be replaced by several identifiers before actual testing
* of the compiler.
*)
(* The identifiers that will replace the XXXX
* must be placed on a line starting with #
* All identifiers preceded by # are ignored!
* The identifier list must be placed inside an IEC 61131-3 comment.
*)
(*
#IL_operators ANDN CAL CALC CALCN CD CLK CU IN JMP JMPC JMPCN
#IL_operators LD LDN ORN PT PV R R1 RET RETC RETCN S S1 ST STN XORN
#SFC_qualifiers D DS L N P #R #S SD SL
NOTE: R and S are identical to IL operators!!
#Task_initialisers PRIORITY SINGLE INTERVAL
*)
(* Use of XXXX as a STEP identifier *)
PROGRAM bar01
VAR
IX1 AT %IX1 : BOOL;
IX2 AT %IX2 : BOOL;
IX3 AT %IX3 : BOOL;
END_VAR
INITIAL_STEP XXXX:
END_STEP
STEP STEP1:
END_STEP
STEP STEP2:
END_STEP
TRANSITION FROM XXXX TO STEP1
:= IX1 = FALSE;
END_TRANSITION
TRANSITION FROM STEP1 TO XXXX
:= IX1 = TRUE;
END_TRANSITION
TRANSITION (PRIORITY := 4) FROM XXXX TO STEP2
:= IX2 = TRUE;
END_TRANSITION
TRANSITION (PRIORITY := 4) FROM STEP2 TO XXXX
:= IX2 = TRUE;
END_TRANSITION
TRANSITION transition_id1 FROM STEP2 TO XXXX
:= IX1 = FALSE AND IX3 = FALSE;
END_TRANSITION
TRANSITION transition_id2 FROM XXXX TO STEP2
:= IX1 = FALSE AND IX3 = FALSE;
END_TRANSITION
TRANSITION transition_id3 (PRIORITY := 3) FROM XXXX TO STEP2
:= IX3 = TRUE;
END_TRANSITION
TRANSITION transition_id4 (PRIORITY := 5) FROM STEP2 TO XXXX
:= IX3 = TRUE;
END_TRANSITION
TRANSITION FROM (XXXX, STEP2) TO STEP1
:= IX1 = FALSE;
END_TRANSITION
TRANSITION FROM (STEP2, XXXX) TO STEP1
:= IX2 = FALSE;
END_TRANSITION
TRANSITION FROM STEP1 TO (XXXX, STEP2)
:= IX1 = TRUE;
END_TRANSITION
TRANSITION FROM STEP1 TO (STEP2, XXXX)
:= IX2 = TRUE;
END_TRANSITION
END_PROGRAM
(* Use of XXXX as a TRANSITION identifier *)
PROGRAM bar02
VAR
IX1 AT %IX1 : BOOL;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
END_STEP
TRANSITION XXXX FROM GO TO STEP1
:= IX1 = FALSE AND IX3 = FALSE;
END_TRANSITION
END_PROGRAM
PROGRAM bar03
VAR
IX1 AT %IX1 : BOOL;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
END_STEP
TRANSITION XXXX (PRIORITY := 3) FROM GO TO STEP1
:= IX3 = TRUE;
END_TRANSITION
END_PROGRAM
(* Use of XXXX as an ACTION identifier *)
PROGRAM bar20
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX ();
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar21
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(N);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar22
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(P);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar23
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(R);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar24
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(S);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar25
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(D, T#1s);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar26
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(L, T#1s);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar27
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(DS, T#1s);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar28
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(SD, T#1s);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar29
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(SL, T#1s);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar30
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(L, delta_1);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar31
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
XXXX(L, delta_1, IX1, QX1);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
END_PROGRAM
PROGRAM bar32
VAR
QX1 : BOOL := 1;
QX2 : BOOL := 0;
QX3 : BOOL;
IX1 : BOOL;
IX2 : BOOL;
IX3 : BOOL;
delta_1 : TIME := T#1s;
END_VAR
INITIAL_STEP GO:
END_STEP
STEP STEP1:
INLINE1 ();
XXXX(L, delta_1, IX1, QX1);
INLINE2 ();
END_STEP
STEP STEP2:
XXXX(L, delta_1, IX1, QX1);
INLINE1 ();
INLINE2 ();
END_STEP
STEP STEP3:
INLINE1 ();
INLINE2 ();
XXXX(L, delta_1, IX1, QX1);
END_STEP
TRANSITION FROM GO TO STEP1
:= IX1 = FALSE;
END_TRANSITION
ACTION XXXX:
QX1 := TRUE;
QX2 := TRUE;
END_ACTION
ACTION INLINE1:
IX1 := TRUE;
END_ACTION
ACTION INLINE2:
IX1 := TRUE;
END_ACTION
END_PROGRAM
(* Checking whether the use of XXXX will confuse any other
* normal and correct IL or ST code.
*)
{#include "basic_code.test" }