diff -r ff5c92df0c78 -r f9e001952488 tests/syntax/identifier/basic_code.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/syntax/identifier/basic_code.test Sat Feb 09 08:57:14 2008 +0100 @@ -0,0 +1,685 @@ +(* This file includes normal standard ST and IL code. + * This code is then included into other tests, once + * possibly strange things have been defined. + * + * Including this normal code will test whether the strange + * things somehow breack the correct parsing and compiling + * of normal code. + * + * Code in this file must not use the XXXX identfier! + *) + + + +(***************************************************************************) +(* Test if generic IL code is not affected by any previous declarations... *) +(***************************************************************************) + + +(* Test each IL operator *) +(* Since our compiler needs to distinguish + * between IL and ST code, we place each IL + * operator in a distinct function, to test whether + * the use of that IL operator as the first IL + * instruction does not confuse the logic + * use to determine whether ST or IL is being parsed. + *) + +function bar0005 : int + var + e_1, f_1 : int; + end_var + & 10 +end_function + + + +function bar0006 : int + var + e_1, f_1 : int; + end_var + &N 10 +end_function + + + +function bar0007 : int + var + e_1, f_1 : int; + end_var + ADD 10 +end_function + + + +function bar0008 : int + var + e_1, f_1 : int; + end_var + AND TRUE +end_function + + +function bar0009 : int + var + e_1, f_1 : int; + end_var + ANDN TRUE +end_function + + +function_block bar0010 + var + e_1, f_1 : int; + tt : TP; + end_var + CAL tt +end_function_block + + +function_block bar0011 + var + e_1, f_1 : int; + tt : TP; + end_var + CALC tt +end_function_block + + +function_block bar0012 + var + e_1, f_1 : int; + tt : TP; + end_var + CALCN tt +end_function_block + + +function_block bar0013 + var + e_1, f_1 : int; + tt : CTUD; + end_var + CU tt +end_function_block + + +function_block bar0014 + var + e_1, f_1 : int; + tt : CTUD; + end_var + CD tt +end_function_block + + +function_block bar0015 + var + e_1, f_1 : int; + tt : R_TRIG; + end_var + CLK tt +end_function_block + + +function bar0016 : int + var + e_1, f_1 : int; + end_var + DIV e_1 +end_function + + +function bar0017 : int + var + e_1, f_1 : int; + end_var + EQ e_1 +end_function + + +function bar0018 : int + var + e_1, f_1 : int; + end_var + GE e_1 +end_function + + +function bar0019 : int + var + e_1, f_1 : int; + end_var + GT e_1 +end_function + + +function_block bar0020 + var + e_1, f_1 : int; + tt : TP; + end_var + IN tt +end_function_block + + +function bar0021 : int + var + e_1, f_1 : int; + end_var + JMP ll + ll: LD FALSE +end_function + + + +function bar0022 : int + var + e_1, f_1 : int; + end_var + JMPC ll + ll: LD FALSE +end_function + + +function bar0023 : int + var + e_1, f_1 : int; + end_var + JMPCN ll + ll: LD FALSE +end_function + + + +function bar0024 : int + var + e_1, f_1 : int; + end_var + LD TRUE +end_function + + +function bar0025 : int + var + e_1, f_1 : int; + end_var + LDN TRUE +end_function + + +function bar0026 : int + var + e_1, f_1 : int; + end_var + LE e_1 +end_function + + +function bar0027 : int + var + e_1, f_1 : int; + end_var + LT e_1 +end_function + + +function bar0028 : int + var + e_1, f_1 : int; + end_var + MOD e_1 +end_function + + +function bar0029 : int + var + e_1, f_1 : int; + end_var + MUL e_1 +end_function + + +function bar0030 : int + var + e_1, f_1 : int; + end_var + NE e_1 +end_function + + +function bar0031 : int + var + e_1, f_1 : int; + end_var + NOT TRUE +end_function + + +function bar0032 : int + var + e_1, f_1 : int; + end_var + OR TRUE +end_function + + +function bar0033 : int + var + e_1, f_1 : int; + end_var + ORN TRUE +end_function + + +function_block bar0034 + var + e_1, f_1 : int; + tt : TP; + end_var + PT tt +end_function_block + + +function_block bar0035 + var + e_1, f_1 : int; + tt : CTUD; + end_var + PV tt +end_function_block + + +function bar0036 : int + var + e_1, f_1 : bool; + end_var + R e_1 (* IL operand *) +end_function + + +function_block bar0037 + var + e_1, f_1 : int; + tt : SR; + end_var + R tt (* FB call *) +end_function_block + + +function_block bar0038 + var + e_1, f_1 : int; + tt : SR; + end_var + R1 tt (* FB call *) +end_function_block + + +function bar0039 : int + var + e_1, f_1 : bool; + end_var + RET +end_function + + +function bar0040 : int + var + e_1, f_1 : bool; + end_var + RETC +end_function + + +function bar0041 : int + var + e_1, f_1 : bool; + end_var + RETCN +end_function + + +function bar0042 : int + var + e_1, f_1 : bool; + end_var + S e_1 +end_function + + +function_block bar0043 + var + e_1, f_1 : int; + tt : SR; + end_var + S1 tt (* FB call *) +end_function_block + + +function bar0044 : int + var + e_1, f_1 : bool; + end_var + ST e_1 +end_function + + +function bar0045 : int + var + e_1, f_1 : bool; + end_var + STN e_1 +end_function + + +function bar0046 : int + var + e_1, f_1 : int; + end_var + SUB e_1 +end_function + + +function bar0047 : int + var + e_1, f_1 : bool; + end_var + XOR e_1 +end_function + + +function bar0048 : int + var + e_1, f_1 : bool; + end_var + XORN e_1 +end_function + + + + + + + + + +(***************************************************************************) +(* Test if generic ST code is not affected by any previous declarations... *) +(***************************************************************************) + +(* A helper FUNCTION BLOCK declaration *) +function_block bar1000 + var_input + a_1, b_1: int; + end_var + var_output + c_1, d_1: int; + end_var + c_1 := 10 + b_1; +end_function_block + + +(* A FUNCTION declaration *) +function bar1001 : int + var_input + a_1, b_1: int; + end_var + var_output + c_1, d_1: int; + end_var + c_1 := 10 + b_1; +end_function + + +(* Generic ST code *) + +function_block bar1002 + var + e_1, f_1 : int; + g_1 : int; + fb : bar1000; + end_var + fb(g_1, 20); + fb (10, g_1, e_1, f_1); + fb (a_1 := g_1, b_1:=g_1, c_1=>g_1, d_1=>f_1); + fb(a_1 := 10, b_1:=20, c_1=>e_1, d_1=>g_1); + fb (c_1=>g_1, a_1:=20, d_1=>f_1); + g_1 := fb.c_1; + fb.a_1 := g_1 + g_1 * 2 * (g_1) / bar1001(g_1, 10, g_1, e_1) MOD g_1 MOD g_1 ** g_1; + IF (g_1 >= 10) THEN g_1 := 10; END_IF; + CASE (g_1 + 10) OF + 10: g_1 := 10; + 10..20:g_1 := 20; + ELSE g_1 := 20; + END_CASE; + FOR g_1 := 10 TO 20 BY 2 DO + g_1 := g_1 + 1; + END_FOR; + FOR e_1 := g_1 TO 20 DO + g_1 := g_1 + 1; + END_FOR; + FOR e_1 := 10 TO g_1 BY 2 DO + g_1 := g_1 + 1; + END_FOR; + FOR e_1 := 10 TO g_1 DO + g_1 := g_1 + 1; + END_FOR; + FOR e_1 := 10 TO 20 BY g_1 DO + g_1 := g_1 + 1; + END_FOR; + WHILE (g_1 >= 10) DO + g_1 := 10; + END_WHILE; + REPEAT g_1 := 10; UNTIL (g_1 >= 10) END_REPEAT; +end_function_block + + + + + + + + + + +(****************************************************************************) +(* Test if generic SFC code is not affected by any previous declarations... *) +(****************************************************************************) + +PROGRAM bar2001 + VAR + QX1 AT %QX1 : BOOL := 1; + QX2 AT %QX2 : BOOL := 0; + QX3 AT %QX3 : BOOL; + IX1 AT %IX1 : BOOL; + IX2 AT %IX2 : BOOL; + IX3 AT %IX3 : BOOL; + END_VAR + VAR + delta_1 : TIME := T#1s; + END_VAR + + INITIAL_STEP GO: + END_STEP + + TRANSITION FROM GO TO STEP1 + := IX1 = FALSE; + END_TRANSITION + + STEP STEP1: + ONSTEP1(); + END_STEP + + ACTION ONSTEP1: + QX1 := TRUE; + QX2 := TRUE; + END_ACTION + + TRANSITION (PRIORITY := 4) FROM STEP1 TO STEP2 + := IX2 = TRUE; + END_TRANSITION + + STEP STEP2: + INLINE1(D, T#1s); + END_STEP + + ACTION INLINE1: + QX1 := QX2 XOR QX1; QX2 := NOT QX2; + END_ACTION + + TRANSITION transition_id1 FROM STEP2 TO A1 + := QX1 = FALSE AND QX2 = FALSE; + END_TRANSITION + + STEP A1: + INLINE2(DS, T#1s); + END_STEP + + ACTION INLINE2: + IX1 := TRUE; + END_ACTION + + TRANSITION transition_id2 (PRIORITY := 3) FROM A1 TO STEP2 + := IX1 = TRUE; + END_TRANSITION + + TRANSITION FROM STEP2 TO (D1, D2, D3) + := QX1 = TRUE AND QX2 = TRUE; + END_TRANSITION + + STEP D1: + INLINE5(L, T#1s); + END_STEP + + ACTION INLINE5: + QX1 := FALSE; + END_ACTION + + TRANSITION FROM D1 TO E1 + := NOT ( QX1 OR QX2 OR QX3 ); + END_TRANSITION + + STEP E1: + INLINE8(N); + END_STEP + + ACTION INLINE8: + QX1 := TRUE; + END_ACTION + + TRANSITION FROM (E1, E2, E3) TO GO + := QX1 AND QX2 AND QX3; + END_TRANSITION + + STEP D2: + INLINE6(P); + END_STEP + + ACTION INLINE6: + QX2 := FALSE; + END_ACTION + + TRANSITION FROM D2 TO E2 + := NOT ( QX1 OR QX2 OR QX3 ); + END_TRANSITION + + STEP E2: + INLINE9(R); + END_STEP + + ACTION INLINE9: + QX2 := TRUE; + END_ACTION + + STEP D3: + INLINE7(S); + END_STEP + + ACTION INLINE7: + QX2 := FALSE; + END_ACTION + + TRANSITION FROM D3 TO E3 + := NOT ( QX1 OR QX2 OR QX3 ); + END_TRANSITION + + STEP E3: + INLINE10(SD, T#1s); + END_STEP + + ACTION INLINE10: + QX3 := TRUE; + END_ACTION + + TRANSITION FROM STEP2 TO A3 + := QX1 = TRUE AND QX2 = FALSE; + END_TRANSITION + + STEP A3: + INLINE4(SL, T#1s); + END_STEP + + ACTION INLINE4: + IX1 := TRUE; + END_ACTION + + TRANSITION FROM A3 TO STEP2 + := IX1 = TRUE; + END_TRANSITION + + TRANSITION FROM STEP2 TO A2 + := QX1 = FALSE AND QX2 = TRUE; + END_TRANSITION + + STEP A2: + INLINE3(L, delta_1); + END_STEP + + ACTION INLINE3: + IX1 := FALSE; + END_ACTION + + TRANSITION FROM A2 TO STEP2 + := IX1 = FALSE; + END_TRANSITION + + STEP A01: + INLINE01(L, delta_1, IX1, QX1); + END_STEP + + ACTION INLINE01: + IX1 := FALSE; + END_ACTION + + TRANSITION FROM STEP2 TO A01 + := IX1 = FALSE; + END_TRANSITION + + STEP A02: + INLINE01(L, delta_1, IX1, QX1); + INLINE1 (L, delta_1, IX1, QX1); + INLINE2 (S); + INLINE3 (); + END_STEP + + TRANSITION FROM STEP2 TO A02 + := IX1 = FALSE; + END_TRANSITION +END_PROGRAM + + + + + + +(*********************************************************************************) +(* Test if generic CONFIGURATION is not affected by any previous declarations... *) +(*********************************************************************************) + +CONFIGURATION CONF0001 + RESOURCE STD_RESSOURCE ON BEREMIZ + TASK STD_TASK(INTERVAL := t#100ms,PRIORITY := 0); + PROGRAM MAIN_INSTANCE : bar2001; + END_RESOURCE +END_CONFIGURATION