0022904: Clean up sccsid variables
[occt.git] / src / ExprIntrp / ExprIntrp.yacc
1 %{
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();
45 %}
46
47 %token SUMOP MINUSOP DIVIDEOP EXPOP MULTOP PARENTHESIS BRACKET ENDPARENTHESIS ENDBRACKET VALUE IDENTIFIER COMMA DIFFERENTIAL DERIVATE DERIVKEY ASSIGNOP DEASSIGNKEY EQUALOP RELSEPARATOR CONSTKEY SUMKEY PRODKEY
48 %start exprentry
49 %left SUMOP MINUSOP
50 %left DIVIDEOP MULTOP
51 %left EXPOP
52 %{
53 %}
54 %%
55
56 exprentry          : GenExpr
57                    | Assignment  
58                    | Deassignment
59                    | FunctionDefinition  {ExprIntrp_EndOfFuncDef();}
60                    | RelationList {ExprIntrp_EndOfRelation();}
61                    ;
62
63 Assignment         : IDENTIFIER {ExprIntrp_AssignVariable();} ASSIGNOP GenExpr {ExprIntrp_EndOfAssign();}
64                    ;
65
66 Deassignment       : DEASSIGNKEY BRACKET IDENTIFIER {ExprIntrp_Deassign();} ENDBRACKET
67                    ;
68
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();}
77                    | SingleExpr
78                    | Derivation
79                    | ConstantDefinition
80                    | Sumator
81                    | Productor
82                    ;
83
84 SingleExpr         : Single
85                    | Function
86                    ;
87
88
89 Single             : IDENTIFIER  {ExprIntrp_VariableIdentifier();}
90                    | VALUE  {ExprIntrp_NumValue();}
91                    ;
92
93 Function           : funcident PARENTHESIS ListGenExpr ENDPARENTHESIS {ExprIntrp_EndFunction();}
94                    | DerFunctionId PARENTHESIS ListGenExpr ENDPARENTHESIS {ExprIntrp_EndDerFunction();}
95                    | DiffFuncId {ExprIntrp_EndDifferential();} PARENTHESIS ListGenExpr ENDPARENTHESIS {ExprIntrp_EndDiffFunction();}
96                    ;
97
98 ListGenExpr        : GenExpr {ExprIntrp_EndFuncArg();} 
99                    | GenExpr COMMA {ExprIntrp_NextFuncArg();} ListGenExpr 
100                    ;
101
102 funcident          : IDENTIFIER  {ExprIntrp_StartFunction();}
103                    ;
104
105 FunctionDefinition : FunctionDef {ExprIntrp_DefineFunction();} ASSIGNOP GenExpr
106                    ;
107
108 DerFunctionId      : IDENTIFIER {ExprIntrp_StartDerivate();} DERIVATE {ExprIntrp_EndDerivate();}
109                    ;
110
111 DiffFuncId         : DIFFERENTIAL DiffId DIVIDEOP DIFFERENTIAL IDENTIFIER {ExprIntrp_DiffVar();}
112                    | DIFFERENTIAL VALUE {ExprIntrp_DiffDegree();} DiffId DIVIDEOP DIFFERENTIAL VALUE {ExprIntrp_VerDiffDegree();} IDENTIFIER {ExprIntrp_DiffDegreeVar();}
113                    ;
114
115 DiffId             : IDENTIFIER {ExprIntrp_StartDifferential();}
116                    | DiffFuncId
117                    ;
118
119 FunctionDef        : IDENTIFIER {ExprIntrp_StartFunction();} BRACKET ListArg ENDBRACKET
120                    ;
121
122 ListArg            : unarg {ExprIntrp_EndFuncArg();}
123                    | unarg COMMA {ExprIntrp_NextFuncArg();} ListArg
124                    ;
125
126 unarg              : IDENTIFIER {ExprIntrp_VariableIdentifier();}
127                    ;
128
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();}
131                    ;
132
133 ConstantDefinition : CONSTKEY BRACKET IDENTIFIER {ExprIntrp_ConstantIdentifier();} COMMA VALUE {ExprIntrp_ConstantDefinition();} ENDBRACKET
134                    ;
135
136 Sumator            : SUMKEY BRACKET GenExpr COMMA IDENTIFIER {ExprIntrp_VariableIdentifier();} COMMA GenExpr COMMA GenExpr COMMA VALUE {ExprIntrp_NumValue();} ENDBRACKET {ExprIntrp_Sumator();}
137                    ;
138
139 Productor          : PRODKEY BRACKET GenExpr COMMA IDENTIFIER {ExprIntrp_VariableIdentifier();} COMMA GenExpr COMMA GenExpr COMMA VALUE {ExprIntrp_NumValue();} ENDBRACKET {ExprIntrp_Productor();}
140                    ;
141
142 RelationList       : SingleRelation 
143                    | SingleRelation RELSEPARATOR RelationList
144                    | SingleRelation '\n' RelationList
145                    ;
146
147 SingleRelation     : GenExpr EQUALOP GenExpr {ExprIntrp_EndOfEqual();}
148                    ;
149