diff -r ff5c92df0c78 -r f9e001952488 tests/syntax/identifier/identifier_in_sfc.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/syntax/identifier/identifier_in_sfc.test Sat Feb 09 08:57:14 2008 +0100 @@ -0,0 +1,611 @@ +(* 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" } +