home *** CD-ROM | disk | FTP | other *** search
- package webeq3.parser.mathml;
-
- import java.util.Enumeration;
- import webeq3.schema.Box;
- import webeq3.schema.ContentBox;
- import webeq3.schema.MFrac;
- import webeq3.schema.MN;
- import webeq3.schema.MO;
- import webeq3.schema.MRoot;
- import webeq3.schema.MRow;
- import webeq3.schema.MSqrt;
- import webeq3.schema.MSub;
- import webeq3.schema.MSubsup;
- import webeq3.schema.MSup;
- import webeq3.schema.MUnder;
- import webeq3.schema.MUnderover;
-
- public class PrimaryRuleSet extends P2CRuleSet {
- PrimaryRuleSet(P2CConverter var1) {
- super(var1);
- }
-
- public void applyRule(int var1, Box var2, ContentBox var3) throws P2CConverterException {
- switch (var1) {
- case 1:
- this.processAbslike(var2, var3);
- break;
- case 2:
- this.processIdentifier(var2, var3);
- break;
- case 3:
- this.processNumber(var2, var3);
- break;
- case 4:
- this.processFraction(var2, var3);
- break;
- case 5:
- this.processRoot(var2, var3);
- case 6:
- case 15:
- case 16:
- case 17:
- default:
- break;
- case 7:
- this.processPower(var2, var3);
- break;
- case 8:
- this.processFunction(var2, var3);
- break;
- case 9:
- this.processBinaryInfixOp(var2, var3);
- break;
- case 10:
- this.processRepeatingInfixOp(var2, var3);
- break;
- case 11:
- this.processUnaryPostfixOp(var2, var3);
- break;
- case 12:
- this.processSumProduct(var2, var3);
- break;
- case 13:
- this.processLimit(var2, var3);
- break;
- case 14:
- this.processIntegral(var2, var3);
- break;
- case 18:
- this.processTranspose(var2, var3);
- break;
- case 19:
- this.processDerivative(var2, var3);
- break;
- case 20:
- this.processHatted(var2, var3);
- break;
- case 21:
- this.processLogicConstruct(var2, var3);
- }
-
- }
-
- private int getBinaryInfixOp(Box var1) {
- int var2 = -1;
- if (var1.getClass().getName().equals("webeq3.schema.MO") && this.getOperatorType(var1) == 2) {
- var2 = MathMLDictionary.getAnyKeyword(var1.udata);
- } else if (var1.children != null && var1.children.size() > 1) {
- Enumeration var3 = var1.children.elements();
-
- while(var3.hasMoreElements() && var2 == -1) {
- Box var4 = (Box)var3.nextElement();
- if (this.getOperatorType(var4) == 2) {
- var2 = MathMLDictionary.getAnyKeyword(var4.udata);
- }
- }
- }
-
- return var2;
- }
-
- private int getFunction(Box var1) {
- int var2 = -1;
- Box var3 = ((P2CRuleSet)this).findLeftMostTerminal(var1);
- if (var3.udata != null) {
- var2 = MathMLDictionary.getAnyKeyword(var3.udata);
- }
-
- return var2;
- }
-
- private int getOperatorType(Box var1) {
- byte var2 = 0;
- if (var1.getClass().getName().equals("webeq3.schema.MO")) {
- MO var3 = (MO)var1;
- int var4 = MathMLDictionary.getAnyKeyword(var3.udata);
- switch (var4) {
- case 101:
- case 102:
- case 103:
- case 104:
- case 105:
- case 106:
- case 107:
- case 108:
- case 109:
- case 110:
- case 111:
- case 112:
- case 118:
- case 162:
- case 163:
- case 164:
- case 166:
- case 167:
- case 168:
- case 198:
- case 199:
- case 266:
- case 267:
- case 278:
- case 279:
- case 301:
- case 302:
- case 303:
- case 304:
- case 305:
- case 306:
- case 307:
- case 308:
- case 309:
- case 310:
- case 311:
- case 312:
- case 313:
- case 314:
- case 320:
- case 321:
- case 322:
- case 323:
- case 324:
- case 325:
- case 326:
- case 327:
- case 328:
- case 330:
- case 331:
- case 332:
- var2 = 2;
- case 113:
- case 114:
- case 115:
- case 117:
- case 120:
- case 121:
- case 127:
- case 129:
- case 130:
- case 131:
- case 132:
- case 133:
- case 134:
- case 135:
- case 136:
- case 152:
- case 153:
- case 154:
- case 155:
- case 156:
- case 157:
- case 158:
- case 159:
- case 160:
- case 165:
- case 169:
- case 170:
- case 171:
- case 172:
- case 173:
- case 174:
- case 175:
- case 176:
- case 177:
- case 178:
- case 179:
- case 180:
- case 181:
- case 182:
- case 183:
- case 184:
- case 185:
- case 186:
- case 187:
- case 188:
- case 189:
- case 190:
- case 192:
- case 193:
- case 194:
- case 195:
- case 196:
- case 197:
- case 200:
- case 201:
- case 202:
- case 203:
- case 204:
- case 205:
- case 206:
- case 207:
- case 208:
- case 209:
- case 210:
- case 211:
- case 212:
- case 213:
- case 214:
- case 215:
- case 216:
- case 217:
- case 218:
- case 219:
- case 220:
- case 221:
- case 222:
- case 223:
- case 224:
- case 225:
- case 226:
- case 227:
- case 228:
- case 229:
- case 230:
- case 231:
- case 232:
- case 233:
- case 234:
- case 235:
- case 236:
- case 237:
- case 238:
- case 239:
- case 240:
- case 241:
- case 242:
- case 243:
- case 244:
- case 245:
- case 246:
- case 247:
- case 248:
- case 249:
- case 250:
- case 251:
- case 252:
- case 253:
- case 254:
- case 255:
- case 256:
- case 257:
- case 258:
- case 259:
- case 260:
- case 261:
- case 262:
- case 263:
- case 264:
- case 265:
- case 268:
- case 269:
- case 270:
- case 271:
- case 272:
- case 274:
- case 277:
- case 280:
- case 281:
- case 282:
- case 283:
- case 284:
- case 285:
- case 286:
- case 287:
- case 288:
- case 289:
- case 299:
- case 300:
- case 315:
- case 316:
- case 317:
- case 318:
- case 319:
- case 329:
- default:
- break;
- case 116:
- var2 = 4;
- break;
- case 119:
- case 122:
- case 123:
- case 191:
- var2 = 3;
- break;
- case 124:
- case 125:
- case 126:
- case 128:
- case 137:
- case 138:
- case 139:
- case 140:
- case 141:
- case 142:
- case 143:
- case 144:
- case 145:
- case 146:
- case 147:
- case 148:
- case 149:
- case 150:
- case 151:
- case 161:
- case 273:
- case 275:
- case 276:
- case 290:
- case 291:
- case 292:
- case 293:
- case 294:
- case 295:
- case 296:
- case 297:
- case 298:
- var2 = 1;
- }
- } else {
- var2 = -1;
- }
-
- return var2;
- }
-
- private int getRepeatingInfixOp(Box var1) {
- int var2 = -1;
- if (this.getOperatorType(var1) == 3) {
- var2 = MathMLDictionary.getAnyKeyword(var1.udata);
- } else if (var1.children != null && var1.children.size() > 1) {
- Enumeration var3 = var1.children.elements();
-
- while(var3.hasMoreElements() && var2 == -1) {
- Box var4 = (Box)var3.nextElement();
- if (this.getOperatorType(var4) == 3 && var2 == -1) {
- var2 = MathMLDictionary.getAnyKeyword(var4.udata);
- }
- }
- }
-
- return var2;
- }
-
- public int getRuleMatch(Box var1) throws P2CConverterException {
- byte var2 = -1;
- if (var1.getClass().getName().equals("webeq3.schema.MRow")) {
- if (this.isAbslike(var1)) {
- var2 = 1;
- } else if (this.isSumProduct(var1)) {
- var2 = 12;
- } else if (this.isIntegral(var1)) {
- var2 = 14;
- } else if (this.isDerivative(var1)) {
- var2 = 19;
- } else if (this.isLimit(var1)) {
- var2 = 13;
- } else if (this.isLogicConstruct(var1)) {
- var2 = 21;
- } else if (this.isOperator(var1)) {
- if (this.isPreMinus(var1)) {
- var2 = 8;
- } else if (this.isLog(var1)) {
- var2 = 8;
- } else if (this.isPrefixFunction(var1)) {
- var2 = 8;
- } else if (this.isBinaryInfixOp(var1)) {
- var2 = 9;
- } else if (this.isRepeatingInfixOp(var1)) {
- var2 = 10;
- } else if (this.isUnaryPostfixOp(var1)) {
- var2 = 11;
- }
- }
- } else if (var1.getClass().getName().equals("webeq3.schema.MI")) {
- var2 = 2;
- } else if (var1.getClass().getName().equals("webeq3.schema.MN")) {
- var2 = 3;
- } else if (var1.getClass().getName().equals("webeq3.schema.MFrac")) {
- var2 = 4;
- } else if (!(var1 instanceof MSqrt) && !(var1 instanceof MRoot)) {
- if (this.isHatted(var1)) {
- var2 = 20;
- } else if (this.isTranspose(var1)) {
- var2 = 18;
- } else if (this.isPower(var1)) {
- var2 = 7;
- }
- } else {
- var2 = 5;
- }
-
- return var2;
- }
-
- private boolean isAbslike(Box var1) {
- boolean var2 = false;
- if (var1 instanceof MRow && var1.children.size() == 3) {
- Box var3 = var1.getChild(0);
- Box var4 = var1.getChild(2);
- if (var3 instanceof MO && var4 instanceof MO) {
- char var5 = var3.udata.charAt(0);
- char var6 = var4.udata.charAt(0);
- if (var5 == '|' && var6 == var5 || var5 == 8968 && var6 == 8969 || var5 == 8970 && var6 == 8971) {
- var2 = true;
- }
- }
- }
-
- return var2;
- }
-
- private int getUnaryPostfixOp(Box var1) {
- int var2 = -1;
- Box var3 = ((P2CRuleSet)this).findRightMostTerminal(var1);
- if (this.getOperatorType(var3) == 4) {
- var2 = MathMLDictionary.getAnyKeyword(var3.udata);
- }
-
- return var2;
- }
-
- private boolean isPreMinus(Box var1) {
- boolean var2 = false;
- if (var1 instanceof MRow) {
- Box var3 = var1.getChild(0);
- if (var3 != null && var3 instanceof MO && var3.adata.equals("-")) {
- var2 = true;
- }
- }
-
- return var2;
- }
-
- private boolean isBinaryInfixOp(Box var1) {
- return this.getBinaryInfixOp(var1) != -1;
- }
-
- private boolean isHatted(Box var1) {
- boolean var2 = false;
- if (var1.getClass().getName().equals("webeq3.schema.MOver") && var1.children != null && var1.children.size() > 1) {
- var2 = true;
- }
-
- return var2;
- }
-
- private boolean isLimit(Box var1) {
- boolean var2 = false;
- Box var3 = var1.getChild(0);
- if (var3 != null && var3 instanceof MUnder) {
- Box var4 = ((P2CRuleSet)this).findLeftMostTerminal(var3);
- int var5 = MathMLDictionary.getAnyKeyword(var4.udata);
- if (var5 == 136) {
- var2 = true;
- }
- }
-
- return var2;
- }
-
- private boolean isLogicConstruct(Box var1) {
- boolean var2 = false;
- Box var3 = var1.getChild(0);
- if (var3 != null && var3 instanceof MRow) {
- Box var4 = var3.getChild(0);
- if (var4 instanceof MO) {
- int var5 = MathMLDictionary.getAnyKeyword(var4.udata);
- if (var5 == 197 || var5 == 196 || var5 == 329) {
- var2 = true;
- }
- }
- }
-
- return var2;
- }
-
- private boolean isLog(Box var1) {
- boolean var2 = false;
- Box var3 = var1.getChild(0);
- int var4 = -1;
- if (var3 instanceof MO) {
- var4 = MathMLDictionary.getAnyKeyword(var3.udata);
- } else if (var3 instanceof MSubsup) {
- var4 = MathMLDictionary.getAnyKeyword(((P2CRuleSet)this).findLeftMostTerminal(var3).udata);
- }
-
- if (var4 == 129) {
- var2 = true;
- }
-
- return var2;
- }
-
- private boolean isOperator(Box var1) {
- boolean var2 = false;
- Enumeration var3 = var1.children.elements();
-
- while(var3.hasMoreElements() && !var2) {
- Box var4 = (Box)var3.nextElement();
- if (var4.isEmbellishedOp()) {
- var4 = ((P2CRuleSet)this).findLeftMostTerminal(var4);
- if (var4.getClass().getName().equals("webeq3.schema.MO")) {
- var2 = MathMLDictionary.getAnyKeyword(var4.udata) != -1;
- }
- }
- }
-
- return var2;
- }
-
- private boolean isTranspose(Box var1) throws P2CConverterException {
- boolean var2 = false;
- if (var1 instanceof MSup) {
- Box var4 = ((P2CRuleSet)this).findRightMostTerminal(var1);
- String var3 = var4.udata;
- if (MathMLDictionary.getAnyKeyword(var3) == 160) {
- Box var5 = var1.getChild(0);
- boolean var6 = PreRuleSet.isVector(var5);
- boolean var7 = PreRuleSet.isMatrix(var5);
- if (var6 || var7) {
- var2 = true;
- }
- }
- }
-
- return var2;
- }
-
- private boolean isPower(Box var1) {
- boolean var2 = false;
- if (var1 instanceof MSubsup) {
- var2 = true;
- }
-
- return var2;
- }
-
- private boolean isPrefixFunction(Box var1) {
- boolean var2 = false;
- Box var3 = var1.getChild(0);
- if (var3 == null) {
- return false;
- } else {
- if (var3.isOperator()) {
- var2 = true;
- } else {
- Box var4 = var3.getParent().getChild(var3.getBoxID() + 1);
- if (var4.udata.equals(String.valueOf(''))) {
- var2 = true;
- }
- }
-
- return var2;
- }
- }
-
- private boolean isRepeatingInfixOp(Box var1) {
- return this.getRepeatingInfixOp(var1) != -1;
- }
-
- private boolean isSumProduct(Box var1) {
- boolean var2 = false;
- Box var3 = var1.getChild(0);
- int var4 = -1;
- if (var3 instanceof MO) {
- var4 = MathMLDictionary.getAnyKeyword(var3.udata);
- } else if (var3 instanceof MSubsup || var3 instanceof MUnderover) {
- var4 = MathMLDictionary.getAnyKeyword(((P2CRuleSet)this).findLeftMostTerminal(var3).udata);
- }
-
- if (var4 == 134 || var4 == 135) {
- var2 = true;
- }
-
- return var2;
- }
-
- private boolean isIntegral(Box var1) {
- boolean var2 = false;
- Box var3 = var1.getChild(0);
- int var4 = -1;
- if (var3 instanceof MO) {
- var4 = MathMLDictionary.getAnyKeyword(var3.udata);
- } else if (var3 instanceof MSubsup || var3 instanceof MUnderover) {
- var4 = MathMLDictionary.getAnyKeyword(((P2CRuleSet)this).findLeftMostTerminal(var3).udata);
- }
-
- if (var4 == 130) {
- var2 = true;
- }
-
- return var2;
- }
-
- private boolean isDerivative(Box var1) {
- boolean var2 = false;
- if (!(var1 instanceof MFrac) && !(var1.getChild(0) instanceof MFrac)) {
- return false;
- } else {
- Box var3 = ((P2CRuleSet)this).findLeftMostTerminal(var1);
- int var4 = MathMLDictionary.getAnyKeyword(var3.udata);
- if (var4 == 131 || var4 == 132) {
- Box var5 = var3.getParent();
- if (!(var5 instanceof MFrac) && var5 != null) {
- var5 = var5.getParent();
- if (!(var5 instanceof MFrac) && var5 != null) {
- var5 = var5.getParent();
- }
- }
-
- if (var5 instanceof MFrac) {
- Box var6 = var5.getChild(1);
- Box var7 = ((P2CRuleSet)this).findLeftMostTerminal(var6);
- int var8 = MathMLDictionary.getAnyKeyword(var7.udata);
- if (var8 == var4) {
- var2 = true;
- }
- }
- }
-
- return var2;
- }
- }
-
- private boolean isUnaryPostfixOp(Box var1) {
- return this.getUnaryPostfixOp(var1) != -1;
- }
-
- private void processAbslike(Box var1, ContentBox var2) throws P2CConverterException {
- Box var3 = ((P2CRuleSet)this).findLeftMostTerminal(var1);
- ContentBox var4 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var5 = null;
- switch (var3.udata.charAt(0)) {
- case '|':
- var5 = new ContentBox(var4, 192, -1);
- var5.name = "abs";
- break;
- case 'Γîê':
- var5 = new ContentBox(var4, 299, -1);
- var5.name = "ceiling";
- break;
- case 'Γîè':
- var5 = new ContentBox(var4, 300, -1);
- var5.name = "floor";
- break;
- default:
- P2CRuleSet.ConvertError("Fences in abslike expression are not | nor ceil nor floor", var1);
- }
-
- var3.cpeer = var5;
- var5.ppeer = var3;
- ((Box)var4).addChild(var5);
- Enumeration var6 = var1.children.elements();
-
- while(var6.hasMoreElements()) {
- Box var7 = (Box)var6.nextElement();
- if (!(var7 instanceof MO)) {
- super.converter.processExpression(var7, var4);
- }
- }
-
- }
-
- private void processBinaryInfixOp(Box var1, ContentBox var2) throws P2CConverterException {
- if (var1.children.size() != 3) {
- P2CRuleSet.ConvertError("Binary infix operator must have two operands", var1);
- }
-
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
-
- int var4;
- for(var4 = 1; !((Box)var1.children.elementAt(var4)).isOperator(); ++var4) {
- }
-
- int var5 = MathMLDictionary.getAnyKeyword(((Box)var1.children.elementAt(var4)).udata);
- ContentBox var6 = new ContentBox(var3, var5, 0);
- var1.cpeer = var6;
- var6.ppeer = var1;
- switch (var5) {
- case 101:
- var6.name = "eq";
- break;
- case 102:
- var6.name = "lt";
- break;
- case 103:
- var6.name = "leq";
- break;
- case 104:
- var6.name = "gt";
- break;
- case 105:
- var6.name = "geq";
- break;
- case 106:
- var6.name = "notin";
- break;
- case 107:
- var6.name = "notsubset";
- break;
- case 108:
- var6.name = "notprsubset";
- break;
- case 109:
- var6.name = "in";
- break;
- case 110:
- var6.name = "subset";
- break;
- case 111:
- var6.name = "prsubset";
- break;
- case 112:
- var6.name = "tendsto";
- char var7 = ((Box)var1.children.elementAt(var4)).udata.charAt(0);
- if (var7 != 8600 && var7 != 8595) {
- if (var7 == 8599 || var7 == 8593) {
- ((Box)var6).setAttribute(50, "below");
- }
- } else {
- ((Box)var6).setAttribute(50, "above");
- }
- break;
- case 118:
- var6.name = "divide";
- break;
- case 162:
- var6.name = "implies";
- break;
- case 163:
- var6.name = "and";
- break;
- case 164:
- var6.name = "or";
- break;
- case 166:
- var6.name = "setdiff";
- break;
- case 167:
- var6.name = "union";
- break;
- case 168:
- var6.name = "intersect";
- break;
- case 198:
- var6.name = "neq";
- break;
- case 266:
- var6.name = "equivalent";
- break;
- case 267:
- var6.name = "approx";
- break;
- case 278:
- var6.name = "scalarproduct";
- break;
- case 279:
- var6.name = "outerproduct";
- break;
- default:
- var6 = this.wrapInCsymbol(var1.getChild(var4).getCopy(), var3);
- var1.cpeer = var6;
- var6.ppeer = var1;
- }
-
- ((Box)var3).addChild(var6);
- super.converter.processExpression((Box)var1.children.firstElement(), var3);
- super.converter.processExpression((Box)var1.children.lastElement(), var3);
- }
-
- private void processBVar(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = new ContentBox(var2, 185, -1);
- var3.name = "bvar";
- var3.empty = false;
- var3.ppeer = var1;
- var1.cpeer = var3;
- ((Box)var2).addChild(var3);
- super.converter.processExpression(var1, var3);
- }
-
- private void processHatted(Box var1, ContentBox var2) throws P2CConverterException {
- Object var3 = null;
- String var5 = ((P2CRuleSet)this).findRightMostTerminal(var1).udata;
- if (var5.equals(String.valueOf('¯'))) {
- this.processConjugate(var1, var2);
- } else if (var5.equals(String.valueOf('┬╖'))) {
- this.processPrimeDotDiff(var1, var2);
- } else if (!var5.equals(String.valueOf('\ue1c0')) && !var5.equals(String.valueOf('→')) && !var5.equals(String.valueOf('\ue192')) && !var5.equals(String.valueOf('⇀'))) {
- ContentBox var4 = new ContentBox(var2, 169, 0);
- var1.cpeer = var4;
- var4.ppeer = var1;
- var4.empty = false;
- var4.name = "ci";
- ((Box)var4).addChild(var1.getChild(0).getCopy());
- ((Box)var2).addChild(var4);
- } else {
- this.processVectorHat(var1, var2);
- }
-
- }
-
- private void processConjugate(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var4 = new ContentBox(var3, 193, -1);
- var4.name = "conjugate";
- ((Box)var3).addChild(var4);
- super.converter.processExpression((Box)var1.children.elementAt(0), var3);
- }
-
- private void processVectorHat(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = new ContentBox(var2, 169, 0);
- var1.cpeer = var3;
- var3.ppeer = var1;
- ((Box)var3).setAttribute(50, "vector");
- var3.name = "ci";
- ((Box)var3).addChild(var1.getChild(0).getCopy());
- ((Box)var2).addChild(var3);
- }
-
- private void processPrimeDotDiff(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var4 = new ContentBox(var3, 131, 206);
- var4.name = "diff";
- ((Box)var3).addChild(var4);
- super.converter.processExpression(var1.getChild(0), var3);
- }
-
- private void processFraction(Box var1, ContentBox var2) throws P2CConverterException {
- if (var1.children.size() != 2) {
- P2CRuleSet.ConvertError("Fraction needs two operands", var1);
- }
-
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var4 = new ContentBox(var3, 118, -1);
- var4.name = "divide";
- ((Box)var3).addChild(var4);
- super.converter.processExpression((Box)var1.children.firstElement(), var3);
- super.converter.processExpression((Box)var1.children.lastElement(), var3);
- }
-
- private void processFunction(Box var1, ContentBox var2) throws P2CConverterException {
- Object var3 = null;
- ContentBox var4 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- int var5 = this.getFunction(var1.getChild(0));
- if (var5 != -1) {
- ContentBox var9 = new ContentBox(var4, var5, 0);
- switch (var5) {
- case 119:
- var9.name = "minus";
- ((Box)var4).addChild(var9);
- break;
- case 120:
- case 121:
- case 122:
- case 123:
- case 127:
- case 130:
- case 132:
- case 133:
- case 134:
- case 135:
- case 136:
- case 152:
- case 153:
- case 154:
- case 155:
- case 156:
- case 157:
- case 158:
- case 160:
- case 162:
- case 163:
- case 164:
- case 165:
- case 166:
- case 167:
- case 168:
- case 169:
- case 170:
- case 171:
- case 172:
- case 173:
- case 174:
- case 175:
- case 176:
- case 177:
- case 178:
- case 179:
- case 180:
- case 181:
- case 182:
- case 183:
- case 184:
- case 185:
- case 186:
- case 187:
- case 188:
- case 189:
- case 190:
- case 191:
- case 192:
- case 193:
- case 194:
- case 195:
- case 196:
- case 197:
- case 198:
- case 199:
- case 200:
- case 201:
- case 202:
- case 203:
- case 204:
- case 205:
- case 206:
- case 207:
- case 208:
- case 209:
- case 210:
- case 211:
- case 212:
- case 213:
- case 214:
- case 215:
- case 216:
- case 217:
- case 218:
- case 219:
- case 220:
- case 221:
- case 222:
- case 223:
- case 224:
- case 225:
- case 226:
- case 227:
- case 228:
- case 229:
- case 230:
- case 231:
- case 232:
- case 233:
- case 234:
- case 235:
- case 236:
- case 237:
- case 238:
- case 239:
- case 240:
- case 241:
- case 242:
- case 243:
- case 244:
- case 245:
- case 246:
- case 247:
- case 248:
- case 249:
- case 250:
- case 251:
- case 252:
- case 253:
- case 254:
- case 255:
- case 256:
- case 257:
- case 258:
- case 259:
- case 260:
- case 261:
- case 262:
- case 263:
- case 264:
- case 265:
- case 266:
- case 267:
- case 271:
- case 272:
- case 274:
- case 277:
- case 278:
- case 279:
- case 280:
- case 281:
- case 282:
- case 283:
- case 284:
- case 285:
- case 286:
- case 287:
- case 288:
- case 289:
- default:
- P2CRuleSet.ConvertError("Unknown prefix operator", var1);
- break;
- case 124:
- var9.name = "max";
- ((Box)var4).addChild(var9);
- break;
- case 125:
- var9.name = "min";
- ((Box)var4).addChild(var9);
- break;
- case 126:
- var9.name = "gcd";
- ((Box)var4).addChild(var9);
- break;
- case 128:
- var9.name = "ln";
- ((Box)var4).addChild(var9);
- break;
- case 129:
- var9.name = "log";
- ((Box)var4).addChild(var9);
- this.processLogBase((Box)var1.children.firstElement(), var4);
- break;
- case 131:
- var9.name = "diff";
- ((Box)var4).addChild(var9);
- break;
- case 137:
- var9.name = "sin";
- ((Box)var4).addChild(var9);
- break;
- case 138:
- var9.name = "cos";
- ((Box)var4).addChild(var9);
- break;
- case 139:
- var9.name = "tan";
- ((Box)var4).addChild(var9);
- break;
- case 140:
- var9.name = "sec";
- ((Box)var4).addChild(var9);
- break;
- case 141:
- var9.name = "csc";
- ((Box)var4).addChild(var9);
- break;
- case 142:
- var9.name = "cot";
- ((Box)var4).addChild(var9);
- break;
- case 143:
- var9.name = "sinh";
- ((Box)var4).addChild(var9);
- break;
- case 144:
- var9.name = "cosh";
- ((Box)var4).addChild(var9);
- break;
- case 145:
- var9.name = "tanh";
- ((Box)var4).addChild(var9);
- break;
- case 146:
- var9.name = "sech";
- ((Box)var4).addChild(var9);
- break;
- case 147:
- var9.name = "csch";
- ((Box)var4).addChild(var9);
- break;
- case 148:
- var9.name = "coth";
- ((Box)var4).addChild(var9);
- break;
- case 149:
- var9.name = "arcsin";
- ((Box)var4).addChild(var9);
- break;
- case 150:
- var9.name = "arccos";
- ((Box)var4).addChild(var9);
- break;
- case 151:
- var9.name = "arctan";
- ((Box)var4).addChild(var9);
- break;
- case 159:
- var9.name = "determinant";
- ((Box)var4).addChild(var9);
- break;
- case 161:
- var9.name = "not";
- ((Box)var4).addChild(var9);
- break;
- case 268:
- var9.name = "divergence";
- ((Box)var4).addChild(var9);
- break;
- case 269:
- Box var6 = var1.getChild(0);
- if (var6 instanceof MSup) {
- Box var7 = ((P2CRuleSet)this).findRightMostTerminal(var6);
- if (var7 instanceof MN && var7.udata.equals("2")) {
- var9.name = "laplacian";
- } else {
- P2CRuleSet.ConvertError("Nabla to some power other than '2' (not laplacian)", var1);
- }
- } else {
- var9.name = "grad";
- }
-
- ((Box)var4).addChild(var9);
- break;
- case 270:
- var9.name = "curl";
- ((Box)var4).addChild(var9);
- break;
- case 273:
- var9.name = "arg";
- ((Box)var4).addChild(var9);
- break;
- case 275:
- var9.name = "real";
- ((Box)var4).addChild(var9);
- break;
- case 276:
- var9.name = "imaginary";
- ((Box)var4).addChild(var9);
- break;
- case 290:
- var9.name = "arcsec";
- ((Box)var4).addChild(var9);
- break;
- case 291:
- var9.name = "arccsc";
- ((Box)var4).addChild(var9);
- break;
- case 292:
- var9.name = "arccot";
- ((Box)var4).addChild(var9);
- break;
- case 293:
- var9.name = "arcsinh";
- ((Box)var4).addChild(var9);
- break;
- case 294:
- var9.name = "arccosh";
- ((Box)var4).addChild(var9);
- break;
- case 295:
- var9.name = "arctanh";
- ((Box)var4).addChild(var9);
- break;
- case 296:
- var9.name = "arcsech";
- ((Box)var4).addChild(var9);
- break;
- case 297:
- var9.name = "arccsch";
- ((Box)var4).addChild(var9);
- break;
- case 298:
- var9.name = "arccoth";
- ((Box)var4).addChild(var9);
- }
- } else {
- if (var1.children.size() < 2) {
- P2CRuleSet.ConvertError("Function needs at least a function name and argument list", var1);
- }
-
- super.converter.processExpression((Box)var1.children.firstElement(), var4);
- }
-
- int var10 = var1.getNumChildren();
-
- for(int var11 = 1; var11 < var10; ++var11) {
- Box var8 = var1.getChild(var11);
- if (var8 instanceof MRow) {
- if (var8.getChild(0).isLFence()) {
- super.converter.processExpression(var8.getChild(1), var4);
- } else {
- super.converter.processExpression(var8, var4);
- }
- } else if (!(var8 instanceof MO) || !var8.adata.equals("⁡")) {
- super.converter.processExpression(var8, var4);
- }
- }
-
- }
-
- private void processIdentifier(Box var1, ContentBox var2) {
- ContentBox var3 = new ContentBox(var2, 169, 0);
- var1.cpeer = var3;
- var3.ppeer = var1;
- var3.adata = var1.adata;
- var3.udata = var1.udata;
- var3.empty = false;
- var3.name = "ci";
- ((Box)var2).addChild(var3);
- }
-
- private void processLimit(Box var1, ContentBox var2) throws P2CConverterException {
- if (var1.children == null || var1.children.size() < 2) {
- P2CRuleSet.ConvertError("Limit needs a low limit and an expression", var1);
- }
-
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var4 = new ContentBox(var3, 136, 0);
- var4.name = "limit";
- ((Box)var3).addChild(var4);
- Box var5 = (Box)var1.children.firstElement();
- Box var6 = (Box)var5.children.elementAt(1);
- this.processBVar(((P2CRuleSet)this).findLeftMostTerminal(var6), var3);
- this.processLowLimit((Box)var6.children.lastElement(), var3);
- super.converter.processExpression((Box)var1.children.lastElement(), var3);
- }
-
- private void processLogBase(Box var1, ContentBox var2) throws P2CConverterException {
- Object var3 = null;
- if (var1.getClass().getName().equals("webeq3.schema.MSub") && var1.children.size() > 1) {
- ContentBox var4 = new ContentBox(var2, 186, 0);
- var4.name = "logbase";
- super.converter.processExpression((Box)var1.children.elementAt(1), var4);
- ((Box)var2).addChild(var4);
- }
-
- }
-
- private void processLowLimit(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = new ContentBox(var2, 183, -1);
- var3.name = "lowlimit";
- var3.empty = false;
- ((Box)var2).addChild(var3);
- super.converter.processExpression(var1, var3);
- }
-
- private void processNumber(Box var1, Box var2) {
- ContentBox var3 = new ContentBox(var2, 170, 0);
- var3.empty = false;
- var1.cpeer = var3;
- var3.ppeer = var1;
- var3.adata = var1.adata;
- var3.udata = var1.udata;
- var3.name = "cn";
- var2.addChild(var3);
- }
-
- private void processPower(Box var1, ContentBox var2) throws P2CConverterException {
- if (var1.children.size() < 2) {
- P2CRuleSet.ConvertError("Power expression needs a root and a power", var1);
- }
-
- Box var3 = var1.getChild(2);
- if (var3 instanceof MO && var3.udata.equals(String.valueOf('′'))) {
- this.processPrimeDotDiff(var1, var2);
- } else {
- ContentBox var4;
- if (!(var1 instanceof MSub)) {
- var4 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var5 = new ContentBox(var4, 120, -1);
- var5.name = "power";
- ((Box)var4).addChild(var5);
- } else {
- var4 = var2;
- }
-
- if (!(var1 instanceof MSup)) {
- ContentBox var7 = new ContentBox(var2, 169, 0);
- var1.cpeer = var7;
- var7.ppeer = var1;
- var7.empty = false;
- var7.name = "ci";
- MSub var6 = new MSub(var1.getParent());
- ((Box)var6).addChild(var1.getChild(0).getCopy());
- ((Box)var6).addChild(var1.getChild(1).getCopy());
- ((Box)var7).addChild(var6);
- ((Box)var4).addChild(var7);
- } else {
- super.converter.processExpression((Box)var1.children.firstElement(), var4);
- }
-
- if (!(var1 instanceof MSub)) {
- super.converter.processExpression((Box)var1.children.lastElement(), var4);
- }
-
- }
- }
-
- private void processTranspose(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var4 = new ContentBox(var3, 160, -1);
- var4.name = "transpose";
- ((Box)var3).addChild(var4);
- super.converter.processExpression((Box)var1.children.firstElement(), var3);
- }
-
- private void processRepeatingInfixOp(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = null;
- ContentBox var4 = null;
- int var5 = var1.children.size();
- int var6 = 0;
-
- while(var6 < var5 - 1) {
- int var7;
- for(var7 = var6 + 1; var7 < var5 - 1 && !((Box)var1.children.elementAt(var7)).isOperator(); ++var7) {
- }
-
- Box var8 = var1.getChild(var7);
- int var9 = MathMLDictionary.getAnyKeyword(var8.udata);
- var3 = new ContentBox(var2, 171, 0);
- var3.name = "apply";
- var3.ppeer = var1;
- var1.cpeer = var3;
- ContentBox var10 = new ContentBox(var3, var9, 0);
- switch (var9) {
- case 119:
- var10.name = "minus";
- break;
- case 122:
- var10.name = "plus";
- break;
- case 123:
- int var11 = var6;
- boolean var12 = true;
-
- do {
- var12 = PreRuleSet.isVector((Box)var1.children.elementAt(var11));
- var11 += 2;
- } while(var12 && var11 < var5 - 1 && MathMLDictionary.getAnyKeyword(((Box)var1.children.elementAt(var11 + 1)).udata) == var9);
-
- if (var12) {
- var10.name = "vectorproduct";
- } else {
- var10.name = "times";
- }
- break;
- case 191:
- var10.name = "compose";
- }
-
- ((Box)var3).addChild(var10);
- if (var4 != null) {
- ((Box)var4).setParent(var3);
- ((Box)var3).addChild(var4);
- } else {
- super.converter.processExpression((Box)var1.children.elementAt(var6), var3);
- }
-
- do {
- ++var6;
-
- while(var6 < var5 - 1 && !((Box)var1.children.elementAt(var6)).isOperand()) {
- ++var6;
- }
-
- super.converter.processExpression((Box)var1.children.elementAt(var6), var3);
- } while(var6 < var5 - 1 && MathMLDictionary.getAnyKeyword(((Box)var1.children.elementAt(var6 + 1)).udata) == var9);
-
- if (var6 < var5) {
- var4 = var3;
- }
- }
-
- ((Box)var3).setParent(var2);
- ((Box)var2).addChild(var3);
- }
-
- private void processRoot(Box var1, ContentBox var2) throws P2CConverterException {
- if (var1.children.size() < 2) {
- P2CRuleSet.ConvertError("Root needs a degree and an expression", var1);
- }
-
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var4 = new ContentBox(var3, 127, -1);
- var4.name = "root";
- ((Box)var3).addChild(var4);
- if (var1 instanceof MSqrt) {
- Enumeration var5 = var1.children.elements();
-
- while(var5.hasMoreElements()) {
- Box var6 = (Box)var5.nextElement();
- super.converter.processExpression(var6, var3);
- }
- } else {
- this.processRootDegree((Box)var1.children.elementAt(1), var3);
- super.converter.processExpression((Box)var1.children.elementAt(0), var3);
- }
-
- }
-
- private void processRootDegree(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = new ContentBox(var2, 186, -1);
- var3.name = "degree";
- var3.empty = false;
- ((Box)var2).addChild(var3);
- super.converter.processExpression(var1, var3);
- }
-
- private void processSumProduct(Box var1, ContentBox var2) throws P2CConverterException {
- int var3 = MathMLDictionary.getAnyKeyword(((P2CRuleSet)this).findLeftMostTerminal(var1).udata);
- ContentBox var4 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var5 = new ContentBox(var4, var3, -1);
- if (var3 == 134) {
- var5.name = "sum";
- } else {
- var5.name = "product";
- }
-
- ((Box)var4).addChild(var5);
-
- Box var6;
- for(var6 = var1; var6.children != null && var6.children.size() > 0 && !(var6.children.firstElement() instanceof MUnderover); var6 = (Box)var6.children.firstElement()) {
- }
-
- Box var7 = (Box)var6.children.firstElement();
- if (var7.children.size() < 3) {
- P2CRuleSet.ConvertError("A sum or product needs upper and lower bounds, and an expression", var1);
- }
-
- Box var8 = (Box)var7.children.elementAt(1);
- this.processBVar((Box)var8.children.firstElement(), var4);
- this.processLowLimit((Box)var8.children.lastElement(), var4);
- if (!(var7 instanceof MUnder)) {
- Box var9 = (Box)var7.children.elementAt(2);
- this.processUpLimit(var9, var4);
- }
-
- super.converter.processExpression((Box)var6.children.elementAt(1), var4);
- }
-
- private void processDerivative(Box var1, ContentBox var2) throws P2CConverterException {
- Box var3 = var1;
- if (!(var1 instanceof MFrac)) {
- var3 = var1.getChild(0);
- }
-
- Box var4 = var3.getChild(0);
- Box var5 = var3.getChild(1);
- Box var6 = ((P2CRuleSet)this).findLeftMostTerminal(var5);
- int var7 = MathMLDictionary.getAnyKeyword(var6.udata);
- ContentBox var8 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var9;
- if (var7 == 131) {
- var9 = new ContentBox(var8, 131, 206);
- var9.name = "diff";
- } else {
- if (var7 != 132) {
- P2CRuleSet.ConvertError("Denominator does not start with d or partial", var1);
- return;
- }
-
- var9 = new ContentBox(var8, 132, 206);
- var9.name = "partialdiff";
- }
-
- ((Box)var8).addChild(var9);
- this.makeDifBvar(var6, var8, var7);
- Box var10 = null;
- if (var4.children.size() > 1) {
- var10 = var4.getChild(1);
- } else {
- Box var11 = var3.getParent();
- if (var3.box_id + 1 < var11.children.size()) {
- var10 = var11.getChild(var3.box_id + 1);
- } else {
- P2CRuleSet.ConvertError("Missing operand for derivative", var1);
- }
- }
-
- if (var10 != null) {
- super.converter.processExpression(var10, var8);
- }
-
- }
-
- private void makeDifBvar(Box var1, Box var2, int var3) throws P2CConverterException {
- Box var4 = var1.getParent();
- if (var4.children.size() <= var1.box_id + 1) {
- P2CRuleSet.ConvertError("Nothing next to the Diff symbol", var1);
- } else {
- Box var5 = var4.getChild(var1.box_id + 1);
- ContentBox var6 = new ContentBox(var2, 185, 0);
- var6.name = "bvar";
- if (this.isPower(var5)) {
- super.converter.processExpression(var5.getChild(0), var6);
- this.processRootDegree(var5.getChild(2), var6);
- } else {
- super.converter.processExpression(var5, var6);
- }
-
- var2.addChild(var6);
- if (var3 == 132 && var4.children.size() > var1.box_id + 3) {
- Box var7 = var4.getChild(var1.box_id + 2);
- int var8 = MathMLDictionary.getAnyKeyword(var7.udata);
- if (var8 == 132) {
- this.makeDifBvar(var7, var2, var8);
- }
- }
-
- }
- }
-
- private void processIntegral(Box var1, ContentBox var2) throws P2CConverterException {
- Box var3 = ((P2CRuleSet)this).deNestMRows(var1);
- if (var1.children.size() < 3) {
- P2CRuleSet.ConvertError("Wrong number of children in integral", var1);
- }
-
- Object var4 = null;
- Box var5 = var1.getChild(2);
- Box var9;
- if (MathMLDictionary.getAnyKeyword(var5.udata) == 131) {
- if (var1.children.size() < 4) {
- P2CRuleSet.ConvertError("Did not find bound variable after d", var1);
- }
-
- var9 = var1.getChild(3);
- } else {
- if (var5.children.size() != 2) {
- P2CRuleSet.ConvertError("Wrong number of children in dx", var1);
- }
-
- Box var6 = var5.getChild(0);
- int var7 = MathMLDictionary.getAnyKeyword(var6.udata);
- if (var7 != 131) {
- P2CRuleSet.ConvertError("Could not find <mo>ⅆ</mo>", var1);
- }
-
- var9 = var5.getChild(1);
- }
-
- Box var10 = var1.getChild(1);
- Box var11 = ((P2CRuleSet)this).findLeftMostTerminal(var3);
- Box var8 = var11.getParent();
- if (var8 instanceof MSubsup) {
- this.processDefiniteIntegral(var1, var2, var9, var10);
- } else if (var11 instanceof MO) {
- this.processIndefiniteIntegral(var1, var2, var9, var10);
- } else {
- P2CRuleSet.ConvertError("Integral does not start with MO nor MSubsup", var1);
- }
-
- }
-
- private void processIndefiniteIntegral(Box var1, ContentBox var2, Box var3, Box var4) throws P2CConverterException {
- ContentBox var5 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var6 = new ContentBox(var5, 130, 207);
- var6.name = "int";
- ((Box)var5).addChild(var6);
- ContentBox var7 = new ContentBox(var5, 185, 0);
- var7.name = "bvar";
- super.converter.processExpression(var3, var7);
- ((Box)var5).addChild(var7);
- super.converter.processExpression(var4, var5);
- }
-
- private void processDefiniteIntegral(Box var1, ContentBox var2, Box var3, Box var4) throws P2CConverterException {
- ContentBox var5 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var6 = new ContentBox(var5, 130, 207);
- var6.name = "int";
- ((Box)var5).addChild(var6);
- ContentBox var7 = new ContentBox(var5, 185, 0);
- var7.name = "bvar";
- super.converter.processExpression(var3, var7);
- ((Box)var5).addChild(var7);
- MSubsup var8 = (MSubsup)var1.getChild(0);
- if (var8.children.size() > 1) {
- Box var9 = ((Box)var8).getChild(1);
- ContentBox var10 = new ContentBox(var5, 183, 0);
- var10.name = "lowlimit";
- super.converter.processExpression(var9, var10);
- ((Box)var5).addChild(var10);
- if (var8.children.size() > 2) {
- Box var11 = ((Box)var8).getChild(2);
- ContentBox var12 = new ContentBox(var5, 184, 0);
- var12.name = "uplimit";
- super.converter.processExpression(var11, var12);
- ((Box)var5).addChild(var12);
- }
- }
-
- super.converter.processExpression(var4, var5);
- }
-
- private void processUnaryPostfixOp(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- int var4 = this.getUnaryPostfixOp(var1);
- ContentBox var5 = new ContentBox(var3, var4, -1);
- var1.cpeer = var5;
- var5.ppeer = var1;
- switch (var4) {
- case 116:
- var5.name = "factorial";
- default:
- ((Box)var3).addChild(var5);
- super.converter.processExpression((Box)var1.children.firstElement(), var3);
- }
- }
-
- private void processLogicConstruct(Box var1, ContentBox var2) throws P2CConverterException {
- int var3 = this.getFunction(var1);
- ContentBox var4;
- if (var3 == 329) {
- ContentBox var5 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- ContentBox var6 = new ContentBox(var5, 161, -1);
- var6.name = "not";
- ((Box)var5).addChild(var6);
- var4 = ((P2CRuleSet)this).makeApplyBox(var5, var1);
- } else {
- var4 = ((P2CRuleSet)this).makeApplyBox(var2, var1);
- }
-
- ContentBox var9 = new ContentBox(var4, var3, -1);
- var1.cpeer = var9;
- var9.ppeer = var1;
- switch (var3) {
- case 196:
- var9.name = "forall";
- break;
- case 197:
- case 329:
- var9.name = "exists";
- }
-
- ((Box)var4).addChild(var9);
- Box var7 = var1.getChild(0).getChild(1);
-
- for(int var8 = 0; var8 < var7.children.size(); var8 += 2) {
- this.processBVar(var7.getChild(var8), var4);
- }
-
- super.converter.processExpression((Box)var1.children.lastElement(), var4);
- }
-
- private void processUpLimit(Box var1, ContentBox var2) throws P2CConverterException {
- ContentBox var3 = new ContentBox(var2, 184, -1);
- var3.name = "uplimit";
- var3.empty = false;
- ((Box)var2).addChild(var3);
- super.converter.processExpression((Box)var1.children.firstElement(), var3);
- }
-
- private ContentBox wrapInCsymbol(Box var1, Box var2) {
- ContentBox var3 = new ContentBox(var2, 250, 0);
- var3.name = "csymbol";
- var3.empty = false;
- ((Box)var3).addChild(var1);
- return var3;
- }
- }
-