diff -r ff5c92df0c78 -r f9e001952488 tests/syntax/identifier/identifier_as_function1.test --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/syntax/identifier/identifier_as_function1.test Sat Feb 09 08:57:14 2008 +0100 @@ -0,0 +1,164 @@ +(* Test whether the keyword XXXX may be used as an identifier for: + * FUNCTION declaration + * + * 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. + *) +(* This file is specific for identifiers identical to IL operators. + * See the note following the identifier list + *) +(* +#IL_operators ANDN CAL CALC CALCN CD CLK CU IN JMP JMPC JMPCN 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 +#Task_initialisers #PRIORITY #SINGLE #INTERVAL +*) + +(* NOTE: The identifier as a function test has some special cases. + * Namely, when using IL operators as function names. + * For example, if a function LD has been previoulsy defined, + * The following IL code may be interpreted as either a + * function call or an IL operation + * LD 10 + * Due to undefined situations as the above, our + * IEC compiler currently will always interpret IL operator identifiers. + * inside IL code as an IL operator. + * This means that calling, from IL code, of functions whose names + * coincide with an IL operator is not possible. + * + * The following test code must therefore consider two possibilities: + * - if the identifier under test is an IL operator + * - if the identifier under test is not an IL operator + *) + + + + + +(* The FUNCTION declaration *) + +function XXXX : int + var_input + a_1, b_1: int; + end_var + XXXX := a_1 + b_1; +end_function + + + +(* Calling of the function from within ST code *) +function foo : int + var + c_1, d_1 : int; + e_1, f_1 : int; + end_var + d_1 := XXXX(c_1, d_1); + d_1 := XXXX(10, 20); + c_1 := XXXX(20, 22); + c_1 := XXXX(b_1 := e_1, a_1 := f_1); + c_1 := XXXX (a_1 := e_1, b_1 := f_1); +end_function + + + + +(* Calling of the function from within IL code *) +(* NOTE: some legal identifiers, for ex. IL operators, + * will not actually be interpreted as a reference to + * the function, but rather as an IL operator. + * However, no error should occur, as the compiler is written + * to give priority to interpreting it as an IL operator. + *) + +(* +function bar000 : int + var + e_1, f_1 : int; + end_var + XXXX 10 + LD 20 + XXXX 30 + XXXX 10, 20 + XXXX ( + b_1 := 10, + a_1 := 20 + ) + XXXX( + b_1 := 10, + a_1 := 20 + ) + XXXX ( + b_1 := 10 + ) + XXXX( + b_1 := 10 + ) +end_function +*) + + + + +(* Checking whether the use of XXXX will confuse the logic + * used to determine if a POU body is in IL or ST language. + *) + +(* +function bar001 : int + var + e_1, f_1 : int; + end_var + XXXX 10 +end_function + + +function bar002 : int + var + e_1, f_1 : int; + end_var + XXXX 10, 20 +end_function + + +function bar003 : int + var + e_1, f_1 : int; + end_var + XXXX( + b_1 := 10, + a_1 := 20 + ) +end_function + + +function bar004 : int + var + e_1, f_1 : int; + end_var + XXXX ( + b_1 := 10, + a_1 := 20 + ) +end_function +*) + + + + + + + + + +(* Checking whether the use of XXXX will confuse any other + * normal and correct IL or ST code. + *) +{#include "basic_code.test"} + +