--- /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