ГОСТ Р МЭК 61131-3—2016
//Таблица 67—70 Перечень инструкций (IL)
: ^Instruction +;
lnstruction_List
ILJnstruction
: ( IL_Label *:’)? { IL_Simple_Operation | IL_Expr |IL_Jump_Operation
| ILJnvocation |IL_Formal_Func_Call
| IL_Return_Operator)? EOL+;
IL_SimpteJnst
IL_Label
IL_Simple_Operation
IL_Expr
IL_Jump_Operation
ILJnvocation
IL_Simple_Operation |IL_Expr | IL_Formal_Func_Call;
; Идентификатор;
; IL_Simp)e_Operator IL_Operand ? |Func_Access IL_Operand_List ?;
: IL_Expr_Operator ‘(‘IL_Operand ? EOL + IL_SimpleJnst_Ust ? ’)’;
; IL_Jump_Operator IL_Label;
; IL_Call_Operator((( FB_lnstance_Name |Func_Name
| Method_Name | THIS
1
| ( ( ‘THIS’V (( FB_lnstance_Name | Class_lnstance_Name ) )*) Method_Name ))
(•(’(( EOL+ IL_Param_List ? )| IL_Operand_List ?)*)*)?) | SUPER
1
*f 7 );
IL_Formal_Func_Call
; Func_Access ’(’ EOL + IL_Param_List ?
IL_Operand
: Constant |Enum_Value | Variable_Access;
IL_Operand_List: IL_Operand ( IL_Operand )*;
: IL_Simpte_lnstruction +;
IL_Simpte_lnst_List
IL_Simpte_lnstruction
IL_Param_List
IL_Param_lnst
IL_Param_Last_lnst
IL_Param_Assign
; ( IL_Simple_Operation |IL_Expr| IL_Formal_Func_Call) EOL+;
: IL_ParamJnst * IL_Param_LastJnst;
: ( IL_Param_Assign |IL_Param_Out_Assign )’/ EOL+;
: ( IL_Param_Assign |IL_Param_Out_Assign )EOL+;
: IL_Assignment ( ILJDperand | (*(’ EOL + IL_Simple_lnst_Ust’)’));
: IL_Assign_Out_Operator Variable_Access;
IL_Param_Out_Assign
IL_Simpte_Operator
IL_Expr_Operator
: ’LD’ | ‘LDN1| ’ST’ | STN’ | ’ST?’ | NOT | ’S’ | R1
| ’S I’ | ‘R111’CLK11CU11"CD11‘PV
| ’IN11 PT11IL_Expr_Operator;
; "AND11•&’ | ‘OR11"XOR" | ’ANDN’ | ’&N11 ORN1
| ’XORN’ | ADD11‘SUB’ | ‘MUL11 DIV’
| MOD11GT | -GE11‘EQ11 LT11’LE11"NE";
IL_Assignment
IL_Assign_Out_
Operator
IL_CaD_Operator
IL_Retum_Operator
IL_Jump_Operator
; Variable_Name
; ‘NOT1? Variable_Name
: CAL11’CALC’ | "CALCN1;
; RT11RETC11 RETCN";
; ‘JMP11*JMPC* | ‘JMPCN1;
//Таблица 71—72 Язык структурированного текста
Expression
ConstantJExpr
: Xor_Expr ( "OR1Xor_Expr )*;
: Выражение;
//константное выражение за время компиляции должно оценивать до постоянного
значения
; And_Expr ( XOR’And_Expr )*;
Xor_Expr
And_Expr
Compare_Expr
Equ_Expr
; Compare_Expr {( &’ | AND1) Conipare_Expr )*;
: ( Equ_Expr ((•=’ | •<>’ ) Equ_Expr )*);
:Add_Expr ((•<• | *>’ | •<=’ | •>=•)Add_Expr )*;
Add_Expr:Term ( ( V |) Term )*;
223