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