home *** CD-ROM | disk | FTP | other *** search
- package webeq3.schema;
-
- import webeq3.action.SyntaxInfo;
- import webeq3.constants.AttributeConstants;
- import webeq3.constants.OperatorDictionary;
- import webeq3.constants.OperatorFormInfo;
- import webeq3.constants.OperatorProperty;
- import webeq3.constants.SemanticConstants;
- import webeq3.constants.TNormalizationException;
- import webeq3.util.IntSet;
-
- public class Normalizer implements AttributeConstants, SemanticConstants {
- private static int recursionDepth = 0;
-
- public static void aFenceOperandCheck(Box var0) throws TNormalizationException {
- boolean var1 = false;
- boolean var2 = false;
- int var3 = var0.getNumChildren();
- boolean var4 = false;
-
- for(int var5 = 0; var5 < var3; ++var5) {
- Box var6 = var0.getChild(var5);
- switch (var6.semanticType()) {
- case 1:
- case 2:
- case 3:
- var4 = false;
- case 4:
- break;
- case 5:
- default:
- if (var4) {
- var2 = true;
- }
-
- var4 = true;
- break;
- case 6:
- var1 = true;
- }
- }
-
- if (var1 && var2) {
- tNormalizeError("can't have absolute value and implied invisible times in the same row", var0);
- }
-
- }
-
- private static boolean arePostfixOperatorSiblings(Box var0, Box var1) {
- return isLeftOperand(var0) && !isRightOperand(var1);
- }
-
- private static boolean arePrefixOperatorSiblings(Box var0, Box var1) {
- return isRightOperand(var1) && !isLeftOperand(var0);
- }
-
- private static void checkMRowEmbedding(Box var0) throws TNormalizationException {
- int var1 = var0.getNumChildren();
- if (var1 > 1) {
- encapsulateChildrenIntoSubrow(var0, 0, var1 - 1);
- }
-
- }
-
- private static void checkOperatorSyntax(Box var0) throws TNormalizationException {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- Box var3 = var0.getChild(var2);
- if (var3.semanticType() == 1) {
- Box var5 = null;
-
- for(int var4 = var2 - 1; var5 == null && var4 >= 0; --var4) {
- if (!var0.getChild(var4).is_spacelike) {
- var5 = var0.getChild(var4);
- }
- }
-
- Box var6 = null;
-
- for(int var10 = var2 + 1; var6 == null && var10 < var1; ++var10) {
- if (!var0.getChild(var10).is_spacelike) {
- var6 = var0.getChild(var10);
- }
- }
-
- switch (var3.semanticForm()) {
- case 1:
- boolean var7 = var5 == null || var5.semanticType() != 5;
- boolean var8 = var6 == null || var6.semanticType() != 5;
- if (var7 || var8) {
- String var9 = "an operand";
- if (var7 && !var8) {
- var9 = "its left operand";
- }
-
- if (var8 && !var7) {
- var9 = "its right operand";
- }
-
- if (var8 && var7) {
- var9 = "both its operands";
- }
-
- tNormalizeError("infix operator seems to be missing " + var9, var3);
- }
- break;
- case 2:
- if (var6 == null || var6.semanticType() != 5) {
- tNormalizeError("prefix operator seems to be missing its operand", var3);
- }
- break;
- case 3:
- if (var5 == null || var5.semanticType() != 5) {
- tNormalizeError("postfix operator seems to be missing its operand", var3);
- }
- break;
- default:
- tNormalizeError("unrecognized operator", var3);
- }
- }
-
- checkOperatorSyntax(var3);
- }
-
- }
-
- private static boolean disambiguateFences(Box var0) {
- int var3 = var0.getNumChildren();
-
- int var1;
- for(var1 = 0; var1 < var3 && var0.getChild(var1).semanticType() != 6; ++var1) {
- }
-
- if (var1 >= var3) {
- return true;
- } else {
- while(true) {
- int var2;
- for(var2 = var1 + 1; var2 < var3 && var0.getChild(var2).semanticType() != 6; ++var2) {
- }
-
- if (var2 >= var3) {
- return false;
- }
-
- if (isValidAtom(var0, var1 + 1, var2 - 1)) {
- var0.getChild(var1).setSemanticType(2);
- var0.getChild(var2).setSemanticType(3);
- if (disambiguateFences(var0)) {
- return true;
- }
- }
-
- var0.getChild(var1).setSemanticType(6);
- var0.getChild(var2).setSemanticType(6);
- var1 = var2;
- }
- }
- }
-
- private static void encapsulateChildrenIntoSubrow(Box var0, int var1, int var2) {
- MRow var3 = new MRow(var0);
- var3.backPtr = var0.getChild(var2).backPtr;
-
- for(int var4 = var1; var4 <= var2; ++var4) {
- Box var5 = var0.getChild(var1);
- var0.removeChildAt(var1);
- var5.setParent(var3);
- ((Box)var3).addChild(var5);
- }
-
- var0.insertChildAt(var3, var1);
- ((Box)var3).setSemanticType(5);
- ((Box)var3).setSyntaxInfo(new SyntaxInfo(2));
- }
-
- private static void subSupFenced(Box var0) {
- if (var0.getChild(2) instanceof MSubsup) {
- MSubsup var1 = (MSubsup)var0.removeChildAt(2);
- Box var2 = var0.removeChildAt(1);
- Box var3 = var0.removeChildAt(0);
-
- Box var4;
- for(var4 = ((Box)var1).removeChildAt(0); !(var4 instanceof MO); var4 = var4.getChild(0).getCopy()) {
- }
-
- MRow var5 = new MRow(var1);
- ((Box)var5).addChild(var3);
- ((Box)var5).addChild(var2);
- ((Box)var5).addChild(var4);
- ((Box)var1).insertChildAt(var5, 0);
- var0.insertChildAt(var1, 0);
- ((Box)var1).setSemanticType(5);
- ((Box)var5).setSemanticType(5);
- ((Box)var1).setSemanticForm(0);
- }
- }
-
- private static void flagFunctions(Box var0) {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1 - 1; ++var2) {
- Box var3 = var0.getChild(var2);
- Box var4 = var0.getChild(var2 + 1);
- if (isFunctionName(var3) && var4 instanceof MO && var4.udata.equals(String.valueOf(''))) {
- var3.setSyntaxInfo(new SyntaxInfo(3));
- }
-
- flagFunctions(var3);
- }
-
- }
-
- private static void functionCheck(Box var0) {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- Box var3 = var0.getChild(var2);
- if (!(var3 instanceof MI)) {
- if (var3.children != null && var3.children.size() > 0) {
- functionCheck(var3);
- }
- } else if (var3.semanticForm() == 2) {
- MO var4 = new MO(var0);
- var4.backPtr = var0;
- var4.my_view = var3.my_view;
- var4.attribute_stack = var3.attribute_stack;
- var4.attributes = new String[86];
-
- for(int var5 = 0; var5 < 86; ++var5) {
- var4.attributes[var5] = var3.attributes[var5];
- }
-
- var4.udata = var3.udata;
- var4.adata = var3.adata;
- var4.semantic_type = var3.semantic_type;
- var4.semantic_form = var3.semantic_form;
- var4.semantic_prec = var3.semantic_prec;
- if ("lim".equals(var4.adata)) {
- ((Box)var4).setSyntaxInfo(new SyntaxInfo(1));
- } else {
- ((Box)var4).setSyntaxInfo(new SyntaxInfo(3));
- }
-
- var0.setChild(var4, var2);
- propagateEmbellishedOpStatus(var4);
- }
- }
-
- }
-
- private static void propagateEmbellishedOpStatus(Box var0) {
- boolean var1 = false;
- Box var2 = var0.getParent();
- if (var2 instanceof MRow) {
- if (var2.getNumChildren() == 1) {
- var1 = true;
- }
- } else if (!(var2 instanceof MFrac) && !(var2 instanceof MScripts)) {
- if (var2 instanceof MAction && var0.box_id == ((MAction)var2).active_toggle) {
- var1 = true;
- }
- } else if (var0.box_id == 0) {
- var1 = true;
- }
-
- if (var1) {
- var2.embellished_op = true;
- var2.semantic_type = var0.semantic_type;
- var2.semantic_form = var0.semantic_form;
- var2.semantic_prec = var0.semantic_prec;
- propagateEmbellishedOpStatus(var2);
- }
-
- }
-
- private static void insertApplyFunction(Box var0) {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1 - 1; ++var2) {
- Box var3;
- for(var3 = var0.getChild(var2); var3.isSpaceLike() && var2 < var1 - 2; var3 = var0.getChild(var2)) {
- ++var2;
- }
-
- int var4 = 1;
-
- Box var5;
- for(var5 = var0.getChild(var2 + var4); var5.isSpaceLike() && var2 + var4 < var1 - 1; var5 = var0.getChild(var2 + var4)) {
- ++var4;
- }
-
- if (isFunctionName(var3) && isMetaLParen(var5)) {
- var3.setSemanticForm(2);
- var3.setSyntaxInfo(new SyntaxInfo(3));
- MO var6 = new MO(var0);
- ((Box)var6).setSemanticType(1);
- ((Box)var6).setSemanticForm(1);
- OperatorProperty var7 = OperatorDictionary.simpleLookUp('');
- ((Box)var6).setSemanticPrecedence(var7.precedence);
- ((Box)var6).setUData(String.valueOf(''));
- ((Box)var6).setAData("⁡");
- var0.insertChildAt(var6, var2 + 1);
- ++var1;
- ++var2;
- }
- }
-
- }
-
- private static void insertInvisibleTimes(Box var0) {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1 - 1; ++var2) {
- Box var3 = var0.getChild(var2);
- Box var4 = var0.getChild(var2 + 1);
- if (var3.semanticType() == 5 && var4.semanticType() == 5) {
- boolean var5 = true;
- if (var3 instanceof MSubsup || var3 instanceof MUnderover) {
- for(var3 = var3.getChild(0); var3 != null && var3 instanceof MRow && var3.getNumChildren() == 1; var3 = var3.getChild(0)) {
- }
-
- if (var3 != null && var3 instanceof MO) {
- var5 = false;
- }
- }
-
- if (var4 instanceof MRow && var4.getNumChildren() > 1) {
- char var6 = var4.getChild(0).udata.length() > 0 ? var4.getChild(0).udata.charAt(0) : 0;
- if (var6 == 8518 || var6 == 8517) {
- var5 = false;
- }
- }
-
- if (var5) {
- MO var9 = new MO(var0);
- ((Box)var9).setSemanticType(1);
- ((Box)var9).setSemanticForm(1);
- OperatorProperty var7 = OperatorDictionary.simpleLookUp('\ufffb');
- ((Box)var9).setSemanticPrecedence(var7.precedence);
- ((Box)var9).setUData(String.valueOf('\ufffb'));
- ((Box)var9).setAData("⁢");
- ((Box)var9).setSyntaxInfo(new SyntaxInfo(1));
- var0.insertChildAt(var9, var2 + 1);
- ++var1;
- ++var2;
- }
- }
- }
-
- }
-
- private static boolean insureAreInfixOperatorSiblings(Box var0, Box var1, Box var2) throws TNormalizationException {
- boolean var3 = !isLeftOperand(var0);
- boolean var4 = !isRightOperand(var2);
- if (var3 || var4) {
- String var5 = "an operand";
- if (var3 && !var4) {
- var5 = "its left operand";
- }
-
- if (var4 && !var3) {
- var5 = "its right operand";
- }
-
- if (var4 && var3) {
- var5 = "both its operands";
- }
-
- tNormalizeError("infix operator seems to be missing " + var5, var1);
- }
-
- return true;
- }
-
- private static boolean isFunctionName(Box var0) {
- if (var0 instanceof MI) {
- return true;
- } else {
- if (var0 instanceof MSubsup || var0 instanceof MUnderover) {
- for(var0 = var0.getChild(0); var0 != null && var0 instanceof MRow && var0.getNumChildren() == 1; var0 = var0.getChild(0)) {
- }
-
- if (var0 != null && var0 instanceof MI) {
- return true;
- }
- }
-
- return false;
- }
- }
-
- private static boolean isLeftOperand(Box var0) {
- if (var0 == null) {
- return false;
- } else {
- switch (var0.semanticType()) {
- case 1:
- return var0.semanticForm() == 3;
- case 2:
- case 4:
- default:
- return false;
- case 3:
- case 5:
- case 6:
- return true;
- }
- }
- }
-
- private static boolean isMetaLParen(Box var0) {
- if (var0 == null) {
- return false;
- } else if (var0 instanceof MO && var0.udata.equals("(")) {
- return true;
- } else {
- return !(var0 instanceof MRow) ? false : isMetaLParen(var0.getChild(0));
- }
- }
-
- private static boolean isRightOperand(Box var0) {
- if (var0 == null) {
- return false;
- } else {
- switch (var0.semanticType()) {
- case 1:
- return var0.semanticForm() == 2;
- case 2:
- case 5:
- case 6:
- return true;
- case 3:
- case 4:
- default:
- return false;
- }
- }
- }
-
- private static boolean isValidAtom(Box var0, int var1, int var2) {
- boolean var3 = false;
- boolean var4 = false;
-
- for(int var5 = var1; var5 <= var2; ++var5) {
- switch (var0.getChild(var5).semanticType()) {
- case 1:
- case 2:
- case 3:
- case 4:
- default:
- break;
- case 5:
- var3 = true;
- break;
- case 6:
- var4 = true;
- }
- }
-
- return !var4 && var3;
- }
-
- public static void normalize(Box var0) throws TNormalizationException {
- int var1 = var0.getNumChildren();
- if (var0.getClass().getName().equals("webeq3.schema.Box") && (var1 > 1 || !(var0.getChild(0) instanceof MRow))) {
- encapsulateChildrenIntoSubrow(var0, 0, var1 - 1);
- }
-
- processWhitespace(var0);
- setChildSemantics(var0);
- functionCheck(var0);
- flagFunctions(var0);
- recursionDepth = 0;
- normalizeNodes(var0);
- }
-
- private static void normalizeNodes(Box var0) throws TNormalizationException {
- if (var0 instanceof MRow) {
- aFenceOperandCheck(var0);
- if (!disambiguateFences(var0)) {
- tNormalizeError("can't make sense of absolute values", var0);
- }
-
- processFences(var0);
- insertApplyFunction(var0);
- insertInvisibleTimes(var0);
- precedenceParse(var0);
- } else if (var0 instanceof MSqrt) {
- normalizeSqrt(var0);
- } else if (var0 instanceof MStyle || var0 instanceof MTd || var0 instanceof MPadded || var0 instanceof MPhantom) {
- checkMRowEmbedding(var0);
- }
-
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- Box var3 = var0.getChild(var2);
- normalizeNodes(var3);
- }
-
- }
-
- private static void normalizeSqrt(Box var0) throws TNormalizationException {
- int var2 = var0.getNumChildren();
- if (var2 != 0) {
- byte var3 = 0;
- if (var0.getChild(var2 - 1).getClass().getName().equals("webeq3.schema.Box")) {
- var3 = 1;
- }
-
- if (var2 != 1 + var3 || !(var0.getChild(0) instanceof MRow)) {
- encapsulateChildrenIntoSubrow(var0, 0, var2 - 1 - var3);
- }
-
- }
- }
-
- private static void precedenceParse(Box var0) throws TNormalizationException {
- IntSet var1 = new IntSet();
-
- do {
- int var2 = -2;
- int var3 = -2;
- int var4 = -2;
- int var5 = -2;
- boolean var6 = true;
- var1.clear();
- int var7 = var0.getNumChildren();
-
- for(int var8 = 0; var8 < var7; ++var8) {
- Box var9 = var0.getChild(var8);
- Box var10 = getEmbellishedOp(var9);
- if (var9 instanceof MO || var9.embellished_op || var10 != null) {
- int var11;
- if (!(var9 instanceof MO) && !var9.embellished_op) {
- var11 = var10.semanticPrecedence();
- } else {
- var11 = var9.semanticPrecedence();
- }
-
- if (var11 > 0) {
- if (var11 >= var3) {
- var3 = var11;
- if (var11 != var2) {
- var5 = var8;
- var4 = var8;
- } else {
- var5 = var8;
- }
- }
-
- var2 = var11;
- }
-
- var1.addElement(var11);
- }
- }
-
- if (var1.size() > 1) {
- int var15 = var0.getChild(var4).semanticForm();
- int var16 = var0.getChild(var5).semanticForm();
- int var17;
- if (var15 != 3 && var15 != 1) {
- var17 = var4;
- } else {
- for(var17 = var4 - 1; var17 >= 0 && var0.getChild(var17).semanticType() != 5 && var0.getChild(var17).semanticType() != 1; --var17) {
- }
-
- if (var17 < 0) {
- tNormalizeError("infix or postfix operator seems to be at beginning of row", var0);
- }
- }
-
- int var12;
- if (var16 != 2 && var16 != 1) {
- var12 = var5;
- } else {
- int var13 = identifyTrailingArgsAndBvars(var0, var5);
- ++var5;
-
- while(var5 < var7 && var0.getChild(var5).semanticType() != 5) {
- if (var0.getChild(var5).semanticType() != 1) {
- ++var5;
- } else {
- tNormalizeError("infix or prefix operator is missing right operand", var0);
- }
- }
-
- if (var5 + var13 - 1 >= var7) {
- tNormalizeError("infix or prefix operator is missing right operand", var0);
- }
-
- var12 = var5 + var13 - 1;
- }
-
- encapsulateChildrenIntoSubrow(var0, var17, var12);
- ++recursionDepth;
- if (recursionDepth > 50) {
- tNormalizeError("recursion depth exceeded -- couldn't normalize expression", var0);
- }
- }
- } while(var1.size() > 1);
-
- }
-
- private static Box getEmbellishedOp(Box var0) {
- Box var1 = null;
- if (var0 instanceof MSubsup || var0 instanceof MUnderover) {
- Box var2 = var0.getChild(0);
- if (var2 instanceof MO && var2.embellished_op) {
- var1 = var2;
- }
- }
-
- return var1;
- }
-
- private static void processFences(Box var0) throws TNormalizationException {
- int var1 = var0.getNumChildren();
- if (var1 != 0) {
- if (var0.getChild(0).semanticType() == 3) {
- if (var0.getNumChildren() <= 1) {
- return;
- }
-
- tNormalizeError("right fence can't be the first thing in a row", var0.getChild(0));
- }
-
- Box var2 = var0.getChild(0);
- Box var3 = var0.getChild(var1 - 1);
- boolean var4 = false;
- if (var2.semanticType() == 2 && var3.semanticType() == 3 && var2.semanticFenceType() == var3.semanticFenceType()) {
- int var5 = 1;
- int var6 = var2.semanticFenceType();
- var4 = true;
-
- for(int var7 = 1; var7 < var1 - 1; ++var7) {
- Box var8 = var0.getChild(var7);
- if (var8.semanticType() == 2 && var8.semanticFenceType() == var6) {
- ++var5;
- }
-
- if (var8.semanticType() == 3 && var8.semanticFenceType() == var6) {
- --var5;
- }
-
- if (var5 == 0) {
- var4 = false;
- }
- }
-
- if (var4 && var5 != 1) {
- tNormalizeError("Fence nesting level mismatch [1]", var0);
- }
- }
-
- if (var4) {
- if (var1 > 2) {
- if (var1 != 3 || !(var0.getChild(1) instanceof MRow)) {
- encapsulateChildrenIntoSubrow(var0, 1, var1 - 2);
- }
-
- subSupFenced(var0);
- }
- } else {
- boolean var14;
- do {
- var1 = var0.getNumChildren();
- var14 = false;
- boolean var15 = false;
- int var16 = -1;
-
- int var18;
- for(var18 = 0; var18 < var1; ++var18) {
- if (var0.getChild(var18).semanticType() == 2) {
- var14 = true;
- var16 = var0.getChild(var18).semanticFenceType();
- break;
- }
- }
-
- int var10 = 0;
-
- int var9;
- for(var9 = var18 + 1; var9 < var1; ++var9) {
- int var11 = var0.getChild(var9).semanticType();
- if (var11 == 2) {
- ++var10;
- }
-
- if (var11 == 3) {
- if (var10 == 0) {
- if (var0.getChild(var9).semanticFenceType() != var16) {
- tNormalizeError("Fence nesting error (overlap?)", var0.getChild(var9));
- }
-
- var15 = true;
- break;
- }
-
- --var10;
- }
- }
-
- if (var14) {
- if (var15) {
- if (var18 >= var9) {
- tNormalizeError("Unable to match fences here", var0);
- }
-
- encapsulateChildrenIntoSubrow(var0, var18, var9);
- } else {
- tNormalizeError("left fence has no matching right one", var0.getChild(var18));
- }
- }
- } while(var14);
-
- var1 = var0.getNumChildren();
-
- for(int var17 = 0; var17 < var1; ++var17) {
- if (var0.getChild(var17).semanticType() == 3) {
- tNormalizeError("right fence has no matching left one", var0.getChild(var17));
- }
- }
-
- }
- }
- }
-
- private static void processWhitespace(Box var0) {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- Box var3 = var0.getChild(var2);
- if (!(var3 instanceof MI)) {
- if (var3.getNumChildren() > 0) {
- processWhitespace(var3);
- }
- } else if (var3.udata.equals(String.valueOf(' ')) || var3.udata.equals(String.valueOf(' ')) || var3.udata.equals(String.valueOf(' ')) || var3.udata.equals(String.valueOf('\uf365')) || var3.udata.equals(String.valueOf('\uf380')) || var3.udata.equals(String.valueOf('\uf382')) || var3.udata.equals(String.valueOf('\uf383')) || var3.udata.equals(String.valueOf('\uf384')) || var3.udata.equals(String.valueOf('\uf385')) || var3.udata.equals(String.valueOf('\uf386')) || var3.udata.equals(String.valueOf('\uf387')) || var3.udata.equals(String.valueOf('\uf388')) || var3.udata.equals(String.valueOf('\uf389')) || var3.udata.equals(String.valueOf('�'))) {
- MText var4 = new MText(var0);
- var4.is_spacelike = true;
- var4.backPtr = var0;
- var4.my_view = var3.my_view;
- var4.attribute_stack = var3.attribute_stack;
- var4.attributes = new String[86];
-
- for(int var5 = 0; var5 < 86; ++var5) {
- var4.attributes[var5] = var3.attributes[var5];
- }
-
- var4.udata = var3.udata;
- var4.adata = var3.adata;
- var0.setChild(var4, var2);
- }
- }
-
- }
-
- private static void setChildSemantics(Box var0) throws TNormalizationException {
- setChildTypes(var0);
- setChildFormAndPrecedences(var0);
- }
-
- private static void setChildFormAndPrecedences(Box var0) throws TNormalizationException {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- Box var3 = var0.getChild(var2);
- if (var3.semanticType() == 1 && OperatorDictionary.isMultiForm(var3.opLookupString())) {
- Box var5 = null;
-
- for(int var4 = var2 - 1; var5 == null && var4 >= 0; --var4) {
- if (!var0.getChild(var4).is_spacelike) {
- var5 = var0.getChild(var4);
- }
- }
-
- Box var6 = null;
-
- for(int var8 = var2 + 1; var6 == null && var8 < var1; ++var8) {
- if (!var0.getChild(var8).is_spacelike) {
- var6 = var0.getChild(var8);
- }
- }
-
- OperatorProperty var7;
- if ((var7 = OperatorDictionary.simpleLookUp("_pre_" + var3.opLookupString())) != null && arePrefixOperatorSiblings(var5, var6)) {
- var3.setSemanticForm(2);
- var3.setSemanticPrecedence(var7.precedence);
- continue;
- }
-
- if ((var7 = OperatorDictionary.simpleLookUp("_post_" + var3.opLookupString())) != null && arePostfixOperatorSiblings(var5, var6)) {
- var3.setSemanticForm(3);
- var3.setSemanticPrecedence(var7.precedence);
- continue;
- }
-
- var7 = OperatorDictionary.simpleLookUp(var3.opLookupString());
- if (var7 == null) {
- tNormalizeError("this operator does not have an infix form", var3);
- } else if (insureAreInfixOperatorSiblings(var5, var3, var6)) {
- var3.setSemanticForm(1);
- var3.setSemanticPrecedence(var7.precedence);
- }
- }
-
- setChildFormAndPrecedences(var3);
- }
-
- }
-
- private static void setChildTypes(Box var0) throws TNormalizationException {
- int var1 = var0.getNumChildren();
-
- for(int var2 = 0; var2 < var1; ++var2) {
- Box var3 = var0.getChild(var2);
- String var4 = var3.opLookupString();
- OperatorFormInfo var5 = OperatorDictionary.formLookUp(var4);
- if ((!(var3 instanceof MI) || var5 == null) && !(var3 instanceof MO) && !var3.embellished_op) {
- if (var3.is_spacelike) {
- var3.setSemanticType(4);
- } else {
- var3.setSemanticType(5);
- }
- } else if (var5 == null) {
- tNormalizeError("Unknown operator", var3);
- } else if (var5.nforms == 1) {
- if (var5.op.isLFence() && var5.op.isRFence()) {
- var3.setSemanticType(6);
- var3.setSemanticFenceType(var5.op.fencetype);
- } else if (var5.op.isLFence()) {
- var3.setSemanticType(2);
- var3.setSemanticFenceType(var5.op.fencetype);
- } else if (var5.op.isRFence()) {
- var3.setSemanticType(3);
- var3.setSemanticFenceType(var5.op.fencetype);
- if (var3.embellished_op) {
- Box var6 = var3.getParent();
- if (var6 instanceof MSubsup) {
- var6.setSemanticType(3);
- var6.setSemanticFenceType(var3.semanticFenceType());
- }
- }
- } else {
- var3.setSemanticType(1);
- }
-
- var3.setSemanticForm(var5.form);
- var3.setSemanticPrecedence(var5.op.precedence);
- } else {
- var3.setSemanticType(1);
- var3.setSemanticForm(0);
- }
-
- switch (var3.semanticType()) {
- case 1:
- var3.setSyntaxInfo(new SyntaxInfo(1));
- break;
- case 2:
- case 3:
- case 6:
- var3.setSyntaxInfo(new SyntaxInfo(5));
- break;
- case 4:
- default:
- var3.setSyntaxInfo(new SyntaxInfo(4));
- break;
- case 5:
- var3.setSyntaxInfo(new SyntaxInfo(2));
- }
-
- setChildTypes(var3);
- }
-
- }
-
- private static int identifyTrailingArgsAndBvars(Box var0, int var1) {
- Box var2 = var0.getChild(var1);
- if (var2.semanticForm() == 1) {
- return 1;
- } else {
- char var3;
- if (var2.children.size() != 0) {
- var3 = var2.getChild(0).udata.charAt(0);
- } else {
- var3 = var2.udata.charAt(0);
- }
-
- if (var3 != 8747) {
- return 1;
- } else if (var1 + 2 >= var0.getNumChildren()) {
- return 1;
- } else {
- Box var4 = var0.getChild(var1 + 2);
- if (var4.semanticType() != 5) {
- return 1;
- } else {
- var4.semantic_type = 7;
- return 2;
- }
- }
- }
- }
-
- public static void tNormalizeError(String var0, Box var1) throws TNormalizationException {
- throw new TNormalizationException(var0, var1);
- }
- }
-