2 extern void ExprIntrp_EndOfFuncDef();
3 extern void ExprIntrp_EndOfRelation();
4 extern void ExprIntrp_AssignVariable();
5 extern void ExprIntrp_EndOfAssign();
6 extern void ExprIntrp_Deassign();
7 extern void ExprIntrp_SumOperator();
8 extern void ExprIntrp_MinusOperator();
9 extern void ExprIntrp_ProductOperator();
10 extern void ExprIntrp_DivideOperator();
11 extern void ExprIntrp_ExpOperator();
12 extern void ExprIntrp_UnaryMinusOperator();
13 extern void ExprIntrp_VariableIdentifier();
14 extern void ExprIntrp_NumValue();
15 extern void ExprIntrp_EndFunction();
16 extern void ExprIntrp_EndDerFunction();
17 extern void ExprIntrp_EndDifferential();
18 extern void ExprIntrp_EndDiffFunction();
19 extern void ExprIntrp_EndFuncArg();
20 extern void ExprIntrp_NextFuncArg();
21 extern void ExprIntrp_StartFunction();
22 extern void ExprIntrp_DefineFunction();
23 extern void ExprIntrp_StartDerivate();
24 extern void ExprIntrp_EndDerivate();
25 extern void ExprIntrp_DiffVar();
26 extern void ExprIntrp_DiffDegree();
27 extern void ExprIntrp_VerDiffDegree();
28 extern void ExprIntrp_DiffDegreeVar();
29 extern void ExprIntrp_StartDifferential();
30 extern void ExprIntrp_StartFunction();
31 extern void ExprIntrp_EndFuncArg();
32 extern void ExprIntrp_NextFuncArg();
33 extern void ExprIntrp_VariableIdentifier();
34 extern void ExprIntrp_Derivation();
35 extern void ExprIntrp_EndDerivation();
36 extern void ExprIntrp_DerivationValue();
37 extern void ExprIntrp_ConstantIdentifier();
38 extern void ExprIntrp_ConstantDefinition();
39 extern void ExprIntrp_VariableIdentifier();
40 extern void ExprIntrp_NumValue();
41 extern void ExprIntrp_Sumator();
42 extern void ExprIntrp_VariableIdentifier();
43 extern void ExprIntrp_Productor();
44 extern void ExprIntrp_EndOfEqual();
47 %token SUMOP MINUSOP DIVIDEOP EXPOP MULTOP PARENTHESIS BRACKET ENDPARENTHESIS ENDBRACKET VALUE IDENTIFIER COMMA DIFFERENTIAL DERIVATE DERIVKEY ASSIGNOP DEASSIGNKEY EQUALOP RELSEPARATOR CONSTKEY SUMKEY PRODKEY
59 | FunctionDefinition {ExprIntrp_EndOfFuncDef();}
60 | RelationList {ExprIntrp_EndOfRelation();}
63 Assignment : IDENTIFIER {ExprIntrp_AssignVariable();} ASSIGNOP GenExpr {ExprIntrp_EndOfAssign();}
66 Deassignment : DEASSIGNKEY BRACKET IDENTIFIER {ExprIntrp_Deassign();} ENDBRACKET
69 GenExpr : GenExpr SUMOP GenExpr {ExprIntrp_SumOperator();}
70 | GenExpr MINUSOP GenExpr {ExprIntrp_MinusOperator();}
71 | GenExpr MULTOP GenExpr {ExprIntrp_ProductOperator();}
72 | GenExpr DIVIDEOP GenExpr {ExprIntrp_DivideOperator();}
73 | GenExpr EXPOP GenExpr {ExprIntrp_ExpOperator();}
74 | PARENTHESIS GenExpr ENDPARENTHESIS
75 | BRACKET GenExpr ENDBRACKET
76 | MINUSOP GenExpr {ExprIntrp_UnaryMinusOperator();}
89 Single : IDENTIFIER {ExprIntrp_VariableIdentifier();}
90 | VALUE {ExprIntrp_NumValue();}
93 Function : funcident PARENTHESIS ListGenExpr ENDPARENTHESIS {ExprIntrp_EndFunction();}
94 | DerFunctionId PARENTHESIS ListGenExpr ENDPARENTHESIS {ExprIntrp_EndDerFunction();}
95 | DiffFuncId {ExprIntrp_EndDifferential();} PARENTHESIS ListGenExpr ENDPARENTHESIS {ExprIntrp_EndDiffFunction();}
98 ListGenExpr : GenExpr {ExprIntrp_EndFuncArg();}
99 | GenExpr COMMA {ExprIntrp_NextFuncArg();} ListGenExpr
102 funcident : IDENTIFIER {ExprIntrp_StartFunction();}
105 FunctionDefinition : FunctionDef {ExprIntrp_DefineFunction();} ASSIGNOP GenExpr
108 DerFunctionId : IDENTIFIER {ExprIntrp_StartDerivate();} DERIVATE {ExprIntrp_EndDerivate();}
111 DiffFuncId : DIFFERENTIAL DiffId DIVIDEOP DIFFERENTIAL IDENTIFIER {ExprIntrp_DiffVar();}
112 | DIFFERENTIAL VALUE {ExprIntrp_DiffDegree();} DiffId DIVIDEOP DIFFERENTIAL VALUE {ExprIntrp_VerDiffDegree();} IDENTIFIER {ExprIntrp_DiffDegreeVar();}
115 DiffId : IDENTIFIER {ExprIntrp_StartDifferential();}
119 FunctionDef : IDENTIFIER {ExprIntrp_StartFunction();} BRACKET ListArg ENDBRACKET
122 ListArg : unarg {ExprIntrp_EndFuncArg();}
123 | unarg COMMA {ExprIntrp_NextFuncArg();} ListArg
126 unarg : IDENTIFIER {ExprIntrp_VariableIdentifier();}
129 Derivation : DERIVKEY BRACKET GenExpr COMMA IDENTIFIER {ExprIntrp_Derivation();} ENDBRACKET {ExprIntrp_EndDerivation();}
130 | DERIVKEY BRACKET GenExpr COMMA IDENTIFIER {ExprIntrp_Derivation();} COMMA VALUE {ExprIntrp_DerivationValue();} ENDBRACKET {ExprIntrp_EndDerivation();}
133 ConstantDefinition : CONSTKEY BRACKET IDENTIFIER {ExprIntrp_ConstantIdentifier();} COMMA VALUE {ExprIntrp_ConstantDefinition();} ENDBRACKET
136 Sumator : SUMKEY BRACKET GenExpr COMMA IDENTIFIER {ExprIntrp_VariableIdentifier();} COMMA GenExpr COMMA GenExpr COMMA VALUE {ExprIntrp_NumValue();} ENDBRACKET {ExprIntrp_Sumator();}
139 Productor : PRODKEY BRACKET GenExpr COMMA IDENTIFIER {ExprIntrp_VariableIdentifier();} COMMA GenExpr COMMA GenExpr COMMA VALUE {ExprIntrp_NumValue();} ENDBRACKET {ExprIntrp_Productor();}
142 RelationList : SingleRelation
143 | SingleRelation RELSEPARATOR RelationList
144 | SingleRelation '\n' RelationList
147 SingleRelation : GenExpr EQUALOP GenExpr {ExprIntrp_EndOfEqual();}