demo_pascal_diff.htm
来自「Delphi脚本控件」· HTM 代码 · 共 482 行 · 第 1/3 页
HTM
482 行
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> A.length = 3 <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
Oper := A[0];
LL := InOrder(A[1]);
RR := InOrder(A[2]);
<font color="blue"><b>if</b></font> (Copy(RR, 1, 1) = OP_SUB) <font color="blue"><b>and</b></font> (Oper = OP_ADD) <font color="blue"><b>then</b></font>
Oper := <font color="Red">''</font>;
result := <font color="Red">'('</font> + LL + oper + RR + <font color="Red">')'</font>;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font>
result := toString(A);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> Compress(R: Variant);
<font color="blue"><b>var</b></font>
K: Integer;
Oper: <font color="blue"><b>String</b></font>;
X1, X2, U, V: Variant;
Ground: Boolean;
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> IsCompound(R) <font color="blue"><b>then</b></font>
K := R.length
<font color="blue"><b>else</b></font>
K := 0;
<font color="blue"><b>if</b></font> K = 2 <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
Oper := R[0];
<font color="blue"><b>if</b></font> Oper = OP_UN <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
X1 := @ R[1];
<font color="blue"><b>if</b></font> IsCompound(X1) <font color="blue"><b>then</b></font>
Compress(X1);
<font color="blue"><b>if</b></font> IsConstant(X1) <font color="blue"><b>then</b></font>
X1 := - X1;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> K = 3 <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
Oper := R[0];
X1 := @ R[1];
X2 := @ R[2];
<font color="blue"><b>if</b></font> IsCompound(X1) <font color="blue"><b>then</b></font>
Compress(X1);
<font color="blue"><b>if</b></font> IsCompound(X2) <font color="blue"><b>then</b></font>
Compress(X2);
Ground := IsConstant(X1) <font color="blue"><b>and</b></font> IsConstant(X2);
<font color="blue"><b>if</b></font> Oper = OP_ADD <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> Ground <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := X1 + X2
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsZero(X1) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := X2
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsZero(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := X1
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X1 = X2 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, 2, X1]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsNeg(X1) <font color="blue"><b>and</b></font> (<font color="blue"><b>not</b></font> IsNeg(X2)) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_SUB, X2, X1[1]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsNeg(X2) <font color="blue"><b>and</b></font> (<font color="blue"><b>not</b></font> IsNeg(X1)) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_SUB, X1, X2[1]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsMult(X1) <font color="blue"><b>and</b></font> IsMult(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> X1[1] = X2[1] <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1[1], [OP_ADD, X1[2], X2[2]]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X1[2] = X2[2] <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1[2], [OP_ADD, X1[1], X2[1]]];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsMult(X1) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> X1[1] = X2 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X2, [OP_ADD, X1[2], 1]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X1[2] = X2 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X2, [OP_ADD, X1[1], 1]];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsMult(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> X2[1] = X1 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1, [OP_ADD, X2[2], 1]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X2[2] = X1 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1, [OP_ADD, X2[1], 1]];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsAdd(X1) <font color="blue"><b>and</b></font> IsConstant(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> IsConstant(X1[1]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X1[2], X1[1] + X2]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsConstant(X1[2]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X1[1], X1[2] + X2];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsAdd(X2) <font color="blue"><b>and</b></font> IsConstant(X1) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> IsConstant(X2[1]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X2[2], X2[1] + X1]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsConstant(X2[2]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X2[1], X2[2] + X1];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsSub(X1) <font color="blue"><b>and</b></font> IsConstant(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> IsConstant(X1[1]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_SUB, X1[1] + X2, X1[2]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsConstant(X1[2]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X2 - X1[2], X1[1]];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsSub(X2) <font color="blue"><b>and</b></font> IsConstant(X1) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> IsConstant(X2[1]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_SUB, X1 + X2[1], X2[2]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsConstant(X2[2]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X1 - X2[2], X2[1]];
<font color="blue"><b>end</b></font>;
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> Oper = OP_SUB <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> Ground <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := X1 - X2
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsZero(X1) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_UN, X2]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsZero(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := X1
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X1 = X2 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := 0
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsNeg(X1) <font color="blue"><b>and</b></font> (<font color="blue"><b>not</b></font> IsNeg(X2)) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X1[1], X2]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsNeg(X2) <font color="blue"><b>and</b></font> (<font color="blue"><b>not</b></font> IsNeg(X1)) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X1, X2[1]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsMult(X1) <font color="blue"><b>and</b></font> IsMult(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> X1[1] = X2[1] <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1[1], [OP_SUB, X1[2], X2[2]]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X1[2] = X2[2] <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1[2], [OP_SUB, X1[1], X2[1]]];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsMult(X1) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> X1[1] = X2 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X2, [OP_SUB, X1[2], 1]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X1[2] = X2 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X2, [OP_SUB, X1[1], 1]];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsMult(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> X2[1] = X1 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1, [OP_SUB, X2[2], 1]]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X2[2] = X1 <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_MULT, X1, [OP_SUB, X2[1], 1]];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsAdd(X1) <font color="blue"><b>and</b></font> IsConstant(X2) <font color="blue"><b>then</b></font>
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> IsConstant(X1[1]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X1[2], X1[1] - X2]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsConstant(X1[2]) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := [OP_ADD, X1[1], X1[2] - X2];
<font color="blue"><b>end</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> IsAdd(X2) <font color="blue"><b>and</b></font> IsConstant(X1) <font color="blue"><b>then</b></font>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?