Clazz.declarePackage ("JS"); Clazz.load (null, "JS.ScriptTokenParser", ["java.lang.Boolean", "$.Float", "JU.Lst", "$.P3", "$.PT", "J.i18n.GT", "JS.ScriptParam", "$.T", "JU.Logger", "$.SimpleUnitCell"], function () { c$ = Clazz.decorateAsClass (function () { this.vwr = null; this.script = null; this.isStateScript = false; this.lineCurrent = 0; this.iCommand = 0; this.ichCurrentCommand = 0; this.ichComment = 0; this.ichEnd = 0; this.ichToken = 0; this.theToken = null; this.lastFlowCommand = null; this.tokenCommand = null; this.lastToken = null; this.tokenAndEquals = null; this.theTok = 0; this.nTokens = 0; this.tokCommand = 0; this.ptNewSetModifier = 0; this.isNewSet = false; this.haveMacro = false; this.logMessages = true; this.atokenInfix = null; this.itokenInfix = 0; this.isSetBrace = false; this.isMathExpressionCommand = false; this.isSetOrDefine = false; this.ltokenPostfix = null; this.isEmbeddedExpression = false; this.isCommaAsOrAllowed = false; this.theValue = null; this.htUserFunctions = null; this.haveString = false; this.residueSpecCodeGenerated = false; this.errorMessage = null; this.errorMessageUntranslated = null; this.errorLine = null; this.errorType = null; Clazz.instantialize (this, arguments); }, JS, "ScriptTokenParser"); Clazz.defineMethod (c$, "compileExpressions", function () { var isScriptExpression = ((this.tokCommand == 134222850 || this.tokCommand == 4124) && this.tokAt (2) == 268435472); this.isEmbeddedExpression = (isScriptExpression || (this.tokCommand != 0 && (this.tokCommand != 134320141 && this.tokCommand != 102436 && this.tokCommand != 364558 && this.tokCommand != 102412 || this.tokenCommand.intValue != 2147483647) && this.tokCommand != 102409 && !JS.T.tokAttr (this.tokCommand, 12288) && (this.nTokens > 2 || !JS.T.tokAttr (this.tokCommand, 20480)))); this.isMathExpressionCommand = (this.tokCommand == 1073741824 || isScriptExpression || JS.T.tokAttr (this.tokCommand, 36864)); var checkExpression = this.isEmbeddedExpression || (JS.T.tokAttr (this.tokCommand, 12288)); if (this.tokAt (1) == 1073742330 && JS.T.tokAttr (this.tokCommand, 12288)) checkExpression = false; if (checkExpression && !this.compileExpression ()) return false; var size = this.atokenInfix.length; var nDefined = 0; for (var i = 1; i < size; i++) { if (this.tokAt (i) == 12290) nDefined++; } size -= nDefined; if (this.isNewSet) { if (size == 1) { this.atokenInfix[0] = JS.T.tv (134320141, 0, this.atokenInfix[0].value); this.isNewSet = false; }}if ((this.isNewSet || this.isSetBrace) && size < this.ptNewSetModifier + 2) { if (!this.isNewSet || !this.haveMacro) return this.commandExpected (); this.htUserFunctions.put (this.atokenInfix[0].value, Boolean.TRUE); }return (size == 1 || !JS.T.tokAttr (this.tokCommand, 262144) ? true : this.error (0)); }); Clazz.defineMethod (c$, "compileExpression", function () { var firstToken = (this.isSetOrDefine && !this.isSetBrace ? 2 : 1); this.ltokenPostfix = new JU.Lst (); this.itokenInfix = 0; var tokenBegin = null; var tok = this.tokAt (1); switch (this.tokCommand) { case 12290: var i = (this.tokAt (1) == 12290 ? 2 : 1); if (this.tokAt (i) == 2 && this.tokAt (i + 1) == 1073742336 && this.tokAt (i + 3) == 268435860) { this.tokCommand = 36867; this.isSetBrace = true; this.ptNewSetModifier = i + 3; this.isMathExpressionCommand = true; this.isEmbeddedExpression = true; this.addTokenToPostfixToken (JS.T.tokenSetProperty); this.addTokenToPostfixToken (JS.T.tokenExpressionBegin); for (var j = 0; j++ <= i; ) this.addNextToken (); this.addTokenToPostfixToken (JS.T.tokenExpressionEnd); firstToken = 0; }break; case 12295: if (tok == 1677721602) firstToken = 2; break; case 1275082245: switch (tok) { case 1073742335: case 1073742334: tok = this.tokAt (++firstToken); break; } case 12294: case 1610625028: switch (tok) { case 1275069441: case 1073742119: tok = this.tokAt (++firstToken); break; } if (tok == 1086324742 && !JS.T.tokAttr (this.tokAt (firstToken + 1), 268435456)) firstToken++; } for (var i = 0; i < firstToken && this.addNextToken (); i++) { } while (this.moreTokens ()) { if (this.isEmbeddedExpression) { while (!this.isExpressionNext ()) { if (this.tokPeekIs (1073741824) && !(this.tokCommand == 134222849 && this.itokenInfix == 1)) { var name = this.atokenInfix[this.itokenInfix].value; var t = JS.T.getTokenFromName (name); if (t != null) if (!this.isMathExpressionCommand && this.lastToken.tok != 12290 || (this.lastToken.tok == 1073742336 || this.tokAt (this.itokenInfix + 1) == 268435472) && !this.isUserFunction (name)) { this.atokenInfix[this.itokenInfix] = t; }}if (!this.addNextToken ()) break; } if (!this.moreTokens ()) break; }if (this.lastToken.tok == 12290) { if (!this.clauseDefine (true, false)) return false; continue; }if (!this.isMathExpressionCommand) this.addTokenToPostfixToken (tokenBegin = JS.T.o (1073742325, "implicitExpressionBegin")); if (!this.clauseOr (this.isCommaAsOrAllowed || !this.isMathExpressionCommand && this.tokPeekIs (268435472))) return false; if (!this.isMathExpressionCommand && !(this.isEmbeddedExpression && this.lastToken === JS.T.tokenCoordinateEnd)) { this.addTokenToPostfixToken (JS.T.tokenExpressionEnd); }if (this.moreTokens ()) { if (this.tokCommand != 1275082245 && this.tokCommand != 12291 && !this.isEmbeddedExpression) return this.error (5); if (this.tokCommand == 1275082245) { tokenBegin.intValue = 0; this.tokCommand = 0; this.isEmbeddedExpression = true; this.isMathExpressionCommand = true; this.isCommaAsOrAllowed = false; }}} this.atokenInfix = this.ltokenPostfix.toArray ( new Array (this.ltokenPostfix.size ())); return true; }); Clazz.defineMethod (c$, "isUserFunction", function (name) { name = name.toLowerCase (); return (!this.isStateScript && (this.vwr.isFunction (name) || this.htUserFunctions.containsKey (name))); }, "~S"); Clazz.defineMethod (c$, "isExpressionNext", function () { return this.tokPeekIs (1073742332) && !(this.tokAt (this.itokenInfix + 1) == 4 && this.tokAt (this.itokenInfix + 2) == 268435490) || !this.isMathExpressionCommand && this.tokPeekIs (268435472); }); c$.tokenAttr = Clazz.defineMethod (c$, "tokenAttr", function (token, tok) { return token != null && JS.T.tokAttr (token.tok, tok); }, "JS.T,~N"); Clazz.defineMethod (c$, "moreTokens", function () { return (this.itokenInfix < this.atokenInfix.length); }); Clazz.defineMethod (c$, "tokAt", function (i) { return (i < this.atokenInfix.length ? this.atokenInfix[i].tok : 0); }, "~N"); Clazz.defineMethod (c$, "tokPeek", function () { return (this.itokenInfix >= this.atokenInfix.length ? 0 : this.atokenInfix[this.itokenInfix].tok); }); Clazz.defineMethod (c$, "tokPeekIs", function (tok) { return (this.tokAt (this.itokenInfix) == tok); }, "~N"); Clazz.defineMethod (c$, "intPeek", function () { return (this.itokenInfix >= this.atokenInfix.length ? 2147483647 : this.atokenInfix[this.itokenInfix].intValue); }); Clazz.defineMethod (c$, "valuePeek", function () { return (this.moreTokens () ? this.atokenInfix[this.itokenInfix].value : ""); }); Clazz.defineMethod (c$, "tokenNext", function () { return (this.itokenInfix >= this.atokenInfix.length ? null : this.atokenInfix[this.itokenInfix++]); }); Clazz.defineMethod (c$, "tokenNextTok", function (tok) { var token = this.tokenNext (); return (token != null && token.tok == tok); }, "~N"); Clazz.defineMethod (c$, "returnToken", function () { this.itokenInfix--; return false; }); Clazz.defineMethod (c$, "getToken", function () { this.theValue = ((this.theToken = this.tokenNext ()) == null ? null : this.theToken.value); return this.theToken; }); Clazz.defineMethod (c$, "getNumericalToken", function () { return (this.getToken () != null && (this.theToken.tok == 2 || this.theToken.tok == 3)); }); Clazz.defineMethod (c$, "floatValue", function () { switch (this.theToken.tok) { case 2: return this.theToken.intValue; case 3: return (this.theValue).floatValue (); } return 0; }); Clazz.defineMethod (c$, "addTokenToPostfix", function (tok, value) { return this.addTokenToPostfixToken (JS.T.o (tok, value)); }, "~N,~O"); Clazz.defineMethod (c$, "addTokenToPostfixInt", function (tok, intValue, value) { return this.addTokenToPostfixToken (JS.T.tv (tok, intValue, value)); }, "~N,~N,~O"); Clazz.defineMethod (c$, "addTokenToPostfixToken", function (token) { if (token == null) return false; if (this.logMessages) JU.Logger.debug ("addTokenToPostfix" + token); if (token.tok == 268435520 && (this.lastToken.tok == 1073742336 || this.lastToken.tok == 1073742337)) { var ipt = this.ltokenPostfix.size () - 1; this.ltokenPostfix.removeItemAt (ipt); this.ltokenPostfix.addLast (JS.T.tokenRightParen); var pcount = 0; var tok; for (var i = this.ltokenPostfix.size (); --i >= 0 && pcount >= 0; ) { switch (tok = this.ltokenPostfix.get (i).tok) { case 268435473: case 268435521: pcount++; break; case 268435472: case 268435520: pcount--; var tok2; if (pcount == 1 && (tok2 = this.ltokenPostfix.get (i - 1).tok) != 268435473 && tok2 != 268435521) { ipt = (tok == 268435520 ? i - 1 : i); pcount = -10; }break; default: tok2 = (i == 0 ? 0 : this.ltokenPostfix.get (i - 1).tok); if (tok2 == 1073742336 || tok2 == 1073742337) { ipt = i - 1; break; }if (i == ipt - 1) { ipt = i; pcount = -10; }break; } } if (pcount == -10) { this.ltokenPostfix.add (ipt, JS.T.tokenLeftParen); }}this.ltokenPostfix.addLast (token); this.lastToken = token; return true; }, "JS.T"); Clazz.defineMethod (c$, "addNextToken", function () { return this.addTokenToPostfixToken (this.tokenNext ()); }); Clazz.defineMethod (c$, "addNextTokenIf", function (tok) { return (this.tokPeekIs (tok) && this.addNextToken ()); }, "~N"); Clazz.defineMethod (c$, "addSubstituteTokenIf", function (tok, token) { if (!this.tokPeekIs (tok)) return false; this.itokenInfix++; return this.addTokenToPostfixToken (token); }, "~N,JS.T"); Clazz.defineMethod (c$, "clauseOr", function (allowCommaAsOr) { this.haveString = false; if (!this.clauseAnd ()) return false; if (this.isEmbeddedExpression && this.lastToken.tok == 1073742326) return true; var tok; while ((tok = this.tokPeek ()) == 268435536 || tok == 268435537 || tok == 268435538 || allowCommaAsOr && tok == 268435504) { if (tok == 268435504 && !this.haveString) this.addSubstituteTokenIf (268435504, JS.T.tokenOr); else this.addNextToken (); if (!this.clauseAnd ()) return false; if (allowCommaAsOr && (this.lastToken.tok == 1073742338 || this.lastToken.tok == 10)) this.haveString = true; } return true; }, "~B"); Clazz.defineMethod (c$, "clauseAnd", function () { if (!this.clauseNot ()) return false; if (this.isEmbeddedExpression && this.lastToken.tok == 1073742326) return true; while (this.tokPeekIs (268435552)) { this.addNextToken (); if (!this.clauseNot ()) return false; } return true; }); Clazz.defineMethod (c$, "clauseNot", function () { if (this.tokPeekIs (268435568)) { this.addNextToken (); return this.clauseNot (); }return (this.clausePrimitive ()); }); Clazz.defineMethod (c$, "clausePrimitive", function () { var tok = this.tokPeek (); switch (tok) { case 1073742195: this.itokenInfix++; return this.clausePrimitive (); case 0: return this.error (4); case 1073742327: case 10: case 268435632: case 136314895: case 2097160: case 2097159: case 2097162: case 1073742331: case 1073742333: case 2097184: return this.addNextToken (); case 4: this.haveString = true; return this.addNextToken (); case 3: return this.addTokenToPostfixInt (1073742359, this.fixModelSpec (this.getToken ()), this.theValue); case 1094713349: case 1094713350: return this.clauseCell (tok); case 134217736: case 1275203608: return this.clauseConnected (tok == 1275203608); case 134218756: case 134218757: return this.clauseSubstructure (); case 134217759: case 134353926: return this.clauseWithin (tok == 134217759); case 12290: return this.clauseDefine (false, false); case 1677721602: case 1745489939: this.addNextToken (); if (this.tokPeekIs (10)) this.addNextToken (); else if (this.tokPeekIs (12290)) return this.clauseDefine (false, false); return true; case 268435472: this.addNextToken (); if (!this.clauseOr (true)) return false; if (!this.addNextTokenIf (268435473)) return this.errorStr (15, ")"); return this.checkForItemSelector (true); case 1073742332: return this.checkForCoordinate (this.isMathExpressionCommand); default: if (this.clauseResidueSpec ()) return true; if (this.isError ()) return false; if (JS.T.tokAttr (tok, 1077936128)) { var itemp = this.itokenInfix; var isOK = this.clauseComparator (true); if (isOK || this.itokenInfix != itemp) return isOK; if (tok == 1237320707) { return this.clauseSubstructure (); }}return this.addNextToken (); } }); Clazz.defineMethod (c$, "checkForCoordinate", function (isImplicitExpression) { var isCoordinate = false; var pt = this.ltokenPostfix.size (); if (isImplicitExpression) { this.addTokenToPostfixToken (JS.T.tokenExpressionBegin); this.tokenNext (); } else if (this.isEmbeddedExpression) { this.tokenNext (); pt--; } else { this.addNextToken (); }var isHash = this.tokPeekIs (4); if (isHash) { isImplicitExpression = false; this.returnToken (); this.ltokenPostfix.removeItemAt (this.ltokenPostfix.size () - 1); this.addNextToken (); var nBrace = 1; while (nBrace != 0) { if (this.tokPeekIs (1073742332)) { if (this.isExpressionNext ()) { this.addTokenToPostfixToken (JS.T.o (1073742325, "implicitExpressionBegin")); if (!this.clauseOr (false)) return false; if (this.lastToken !== JS.T.tokenCoordinateEnd) { this.addTokenToPostfixToken (JS.T.tokenExpressionEnd); }} else { nBrace++; }}if (this.tokPeekIs (1073742338)) nBrace--; this.addNextToken (); } } else { if (!this.tokPeekIs (1073742338) && !this.clauseOr (false)) return false; var n = 1; while (!this.tokPeekIs (1073742338)) { var haveComma = this.addNextTokenIf (268435504); if (!this.clauseOr (false)) return (haveComma || n < 3 ? false : this.errorStr (15, "}")); n++; } isCoordinate = (n >= 2); }if (isCoordinate && (isImplicitExpression || this.isEmbeddedExpression)) { this.ltokenPostfix.set (pt, JS.T.tokenCoordinateBegin); this.addTokenToPostfixToken (JS.T.tokenCoordinateEnd); this.tokenNext (); } else if (isImplicitExpression) { this.addTokenToPostfixToken (JS.T.tokenExpressionEnd); this.tokenNext (); } else if (this.isEmbeddedExpression) { if (!isHash) this.tokenNext (); } else { this.addNextToken (); }return this.checkForItemSelector (!isHash); }, "~B"); Clazz.defineMethod (c$, "checkForItemSelector", function (allowNumeric) { var tok; if ((tok = this.tokAt (this.itokenInfix + 1)) == 268435520 || allowNumeric && tok == 1073742332) return true; while (true) { if (!this.addNextTokenIf (268435520)) break; if (!this.clauseItemSelector ()) return false; if (!this.addNextTokenIf (268435521)) return this.errorStr (15, "]"); } return true; }, "~B"); Clazz.defineMethod (c$, "clauseWithin", function (isWithin) { this.addNextToken (); if (!this.addNextTokenIf (268435472)) return false; if (this.getToken () == null) return false; var distance = 3.4028235E38; var key = null; var allowComma = isWithin; var tok; var tok0 = this.theToken.tok; if (!isWithin) { tok = -1; for (var i = this.itokenInfix; tok != 0; i++) { switch (tok = this.tokAt (i)) { case 268435504: tok = 0; break; case 1073742332: case 268435472: case 268435473: distance = 100; this.returnToken (); tok0 = tok = 0; break; } } }switch (tok0) { case 268435616: if (this.getToken () == null) return false; if (this.theToken.tok != 2) return this.error (12); distance = -this.theToken.intValue; break; case 2: case 3: distance = this.floatValue (); break; case 12290: this.addTokenToPostfixToken (this.theToken); if (!this.clauseDefine (true, false)) return false; key = ""; allowComma = false; break; } if (isWithin && distance == 3.4028235E38) switch (tok0) { case 12290: break; case 1111490587: case 1073742128: case 134218756: case 134218757: case 1237320707: case 1073741925: case 1073742189: this.addTokenToPostfix (4, this.theValue); if (!this.addNextTokenIf (268435504)) return false; allowComma = false; tok = this.tokPeek (); switch (tok) { case 0: return false; case 4: this.addNextToken (); key = ""; break; case 12290: if (!this.clauseDefine (false, true)) return false; key = ""; break; default: return false; } break; case 1073742328: allowComma = false; case 1086326785: case 1086326786: case 1073741863: case 1678381065: case 1086326788: case 1073742329: case 1086326789: case 1086324742: case 1814695966: case 136314895: case 1094717454: case 1094713360: case 134217750: case 134219265: case 1094713362: case 1086324744: case 2097184: case 1094713366: case 1639976963: case 4: case 1648363544: key = this.theValue; break; default: key = (this.theValue).toLowerCase (); break; } if (key == null) this.addTokenToPostfix (3, Float.$valueOf (distance)); else if (key.length > 0) this.addTokenToPostfix (4, key); var done = false; while (!done) { if (tok0 != 0 && !this.addNextTokenIf (268435504)) break; if (tok0 == 0) tok0 = 134353926; var isCoordOrPlane = false; tok = this.tokPeek (); if (isWithin) { switch (tok0) { case 2: case 3: if (tok == 1073742335 || tok == 1073742334) { this.addTokenToPostfixToken (this.getToken ()); if (!this.addNextTokenIf (268435504)) break; tok = this.tokPeek (); }break; } if (key == null) { switch (tok) { case 134219265: case 1073742329: case 134217750: isCoordOrPlane = true; this.addNextToken (); break; case 1073742330: this.getToken (); this.getToken (); this.addTokenToPostfix (4, "$" + this.theValue); done = true; break; case 1086324742: case 1648363544: case 1814695966: this.getToken (); this.addTokenToPostfix (4, JS.T.nameOf (tok)); break; case 1073742332: this.returnToken (); isCoordOrPlane = true; this.addTokenToPostfixToken (JS.T.getTokenFromName (distance == 3.4028235E38 ? "plane" : "coord")); } if (!done) this.addNextTokenIf (268435504); }}tok = this.tokPeek (); if (done) break; if (isCoordOrPlane) { while (!this.tokPeekIs (268435473)) { switch (this.tokPeek ()) { case 0: return this.error (4); case 268435472: this.addTokenToPostfixToken (JS.T.tokenExpressionBegin); this.addNextToken (); if (!this.clauseOr (false)) return this.errorIntStr2 (18, "WITHIN", ": ?"); if (!this.addNextTokenIf (268435473)) return this.errorStr (15, ", / )"); this.addTokenToPostfixToken (JS.T.tokenExpressionEnd); break; case 12290: if (!this.clauseDefine (false, false)) return false; break; default: this.addTokenToPostfixToken (this.getToken ()); } } } else if (!this.clauseOr (allowComma)) { }} if (!this.addNextTokenIf (268435473)) return this.errorStr (15, ")"); return true; }, "~B"); Clazz.defineMethod (c$, "clauseConnected", function (isPolyhedra) { this.addNextToken (); if (!this.addNextTokenIf (268435472)) { this.addTokenToPostfixToken (JS.T.tokenLeftParen); this.addTokenToPostfixToken (JS.T.tokenRightParen); return true; }while (true) { if (this.addNextTokenIf (2)) { if (!this.addNextTokenIf (268435504)) { break; }if (isPolyhedra) { this.returnToken (); break; }} else if (isPolyhedra && (this.addNextTokenIf (4) || this.addNextTokenIf (1073741824))) { break; }if (this.addNextTokenIf (2)) if (!this.addNextTokenIf (268435504)) break; if (this.addNextTokenIf (3)) if (!this.addNextTokenIf (268435504)) break; if (this.addNextTokenIf (3)) if (!this.addNextTokenIf (268435504)) break; var o = this.getToken ().value; var strOrder = (Clazz.instanceOf (o, String) ? o : " "); var intType = JS.ScriptParam.getBondOrderFromString (strOrder); if (intType == 131071) { this.returnToken (); } else { this.addTokenToPostfix (4, strOrder); if (!this.addNextTokenIf (268435504)) break; }if (this.addNextTokenIf (268435473)) return true; if (!this.clauseOr (this.tokPeekIs (268435472))) return false; if (this.addNextTokenIf (268435473)) return true; if (!this.addNextTokenIf (268435504)) return false; if (!this.clauseOr (this.tokPeekIs (268435472))) return false; break; } if (!this.addNextTokenIf (268435473)) return this.errorStr (15, ")"); return true; }, "~B"); Clazz.defineMethod (c$, "clauseSubstructure", function () { this.addNextToken (); if (!this.addNextTokenIf (268435472)) return false; if (this.tokPeekIs (12290)) { if (!this.clauseDefine (false, true)) return false; } else if (!this.addNextTokenIf (4)) { return this.errorStr (15, "\"...\""); }if (this.addNextTokenIf (268435504)) if (!this.clauseOr (this.tokPeekIs (268435472))) return false; if (!this.addNextTokenIf (268435473)) return this.errorStr (15, ")"); return true; }); Clazz.defineMethod (c$, "clauseItemSelector", function () { var tok; var nparen = 0; while ((tok = this.tokPeek ()) != 0 && tok != 268435521) { this.addNextToken (); if (tok == 268435520) nparen++; if (this.tokPeek () == 268435521 && nparen-- > 0) this.addNextToken (); } return true; }); Clazz.defineMethod (c$, "clauseComparator", function (isOptional) { var tokenAtomProperty = this.tokenNext (); var tokenComparator = this.tokenNext (); if (!JS.ScriptTokenParser.tokenAttr (tokenComparator, 268435712)) { if (!isOptional) return this.errorStr (15, "== != < > <= >="); if (tokenComparator != null) this.returnToken (); this.returnToken (); return false; }if (JS.ScriptTokenParser.tokenAttr (tokenAtomProperty, 1086324736) && tokenComparator.tok != 268435860 && tokenComparator.tok != 268435862 && tokenComparator.tok != 268435861) return this.errorStr (15, "== !="); if (this.tokPeek () == 268435520) { this.getToken (); this.addTokenToPostfixToken (JS.T.tokenLeftParen); while (true) { if (!this.addCompare (tokenAtomProperty, tokenComparator)) return false; if (this.tokPeek () == 268435504) this.getToken (); else if (this.tokPeek () == 268435521) break; this.addTokenToPostfixToken (tokenComparator.tok == 268435861 ? JS.T.tokenAnd : JS.T.tokenOr); } this.getToken (); this.addTokenToPostfixToken (JS.T.tokenRightParen); return true; }return this.addCompare (tokenAtomProperty, tokenComparator); }, "~B"); Clazz.defineMethod (c$, "addCompare", function (tokenAtomProperty, tokenComparator) { if (this.getToken () == null) return this.errorStr (17, "" + this.valuePeek ()); var isNegative = (this.theToken.tok == 268435616); if (isNegative && this.getToken () == null) return this.error (12); switch (this.theToken.tok) { case 2: case 3: case 1073741824: case 4: case 1073742332: case 12290: break; default: if (!JS.T.tokAttr (this.theToken.tok, 1073741824)) return this.error (13); } this.addTokenToPostfixInt (tokenComparator.tok, tokenAtomProperty.tok, tokenComparator.value + (isNegative ? " -" : "")); if (tokenAtomProperty.tok == 1715472409) this.addTokenToPostfixToken (tokenAtomProperty); if (this.theToken.tok == 1073742332) { this.returnToken (); return this.clausePrimitive (); }this.addTokenToPostfixToken (this.theToken); if (this.theToken.tok == 12290) return this.clauseDefine (true, false); return true; }, "JS.T,JS.T"); Clazz.defineMethod (c$, "clauseCell", function (tok) { var cell = new JU.P3 (); this.tokenNext (); if (!this.tokenNextTok (268435860)) return this.errorStr (15, "="); if (this.getToken () == null) return this.error (3); if (this.theToken.tok == 2) { JU.SimpleUnitCell.ijkToPoint3f (this.theToken.intValue, cell, 1, 0); return this.addTokenToPostfix (tok, cell); }if (this.theToken.tok != 1073742332 || !this.getNumericalToken ()) return this.error (3); cell.x = this.floatValue (); if (this.tokPeekIs (268435504)) this.tokenNext (); if (!this.getNumericalToken ()) return this.error (3); cell.y = this.floatValue (); if (this.tokPeekIs (268435504)) this.tokenNext (); if (!this.getNumericalToken () || !this.tokenNextTok (1073742338)) return this.error (3); cell.z = this.floatValue (); return this.addTokenToPostfix (tok, cell); }, "~N"); Clazz.defineMethod (c$, "clauseDefine", function (haveToken, forceString) { if (!haveToken) { var token = this.tokenNext (); if (forceString) token = JS.T.tokenDefineString; this.addTokenToPostfixToken (token); }if (this.tokPeekIs (0)) return this.error (4); if (!this.addSubstituteTokenIf (1073742332, JS.T.tokenExpressionBegin)) { if (this.tokPeek () == 12290) this.addNextToken (); return this.addNextToken () && this.checkForItemSelector (true); }while (this.moreTokens () && !this.tokPeekIs (1073742338)) { if (this.tokPeekIs (1073742332)) { if (!this.checkForCoordinate (true)) return false; } else { this.addNextToken (); }} return this.addSubstituteTokenIf (1073742338, JS.T.tokenExpressionEnd) && this.checkForItemSelector (true); }, "~B,~B"); Clazz.defineMethod (c$, "generateResidueSpecCode", function (token) { if (this.residueSpecCodeGenerated) this.addTokenToPostfixToken (JS.T.tokenAndSpec); this.addTokenToPostfixToken (token); this.residueSpecCodeGenerated = true; return true; }, "JS.T"); Clazz.defineMethod (c$, "clauseResidueSpec", function () { var tok = this.tokPeek (); this.residueSpecCodeGenerated = false; var checkResNameSpec = false; switch (tok) { case 0: case 2097156: case 2097174: return false; case 2: case 268435490: case 268435634: case 5: break; case 268435633: case 268435520: case 1073741824: checkResNameSpec = true; break; default: if (JS.T.tokAttr (tok, 268435712)) return false; var str = "" + this.valuePeek (); checkResNameSpec = (str.length == 2 || str.length == 3); if (!checkResNameSpec) return false; } var specSeen = false; if (checkResNameSpec) { if (!this.clauseResNameSpec ()) return false; specSeen = true; tok = this.tokPeek (); }if (tok == 2 || tok == 268435633 || tok == 5) { if (!this.clauseSequenceSpec ()) return false; specSeen = true; tok = this.tokPeek (); }if (tok == 268435490) { if (!this.clauseChainSpec (tok)) return false; specSeen = true; tok = this.tokPeek (); }if (tok == 1073742336) { if (!this.clauseAtomSpec ()) return false; specSeen = true; tok = this.tokPeek (); }if (tok == 268435634) { if (!this.clauseAlternateSpec ()) return false; specSeen = true; tok = this.tokPeek (); }if (tok == 268435632) { if (!this.clauseModelSpec ()) return false; specSeen = true; tok = this.tokPeek (); }if (!specSeen) return this.error (14); if (!this.residueSpecCodeGenerated) { this.addTokenToPostfixToken (JS.T.tokenAll); }return true; }); Clazz.defineMethod (c$, "clauseResNameSpec", function () { this.getToken (); var tok = this.tokPeek (); switch (this.theToken.tok) { case 268435633: return true; case 268435520: var strSpec = ""; while (this.getToken () != null && this.theToken.tok != 268435521) strSpec += this.theValue; if (this.theToken == null) return false; if (strSpec === "") return true; var pt; return (strSpec.length > 0 && (pt = strSpec.indexOf ("*")) >= 0 && pt != strSpec.length - 1 ? this.error (14) : this.generateResidueSpecCode (JS.T.o (1073742360, strSpec.toUpperCase ()))); default: if (JS.T.tokAttr (tok, 268435712)) { this.returnToken (); return false; }var res = this.theValue; if (tok == 268435633) { res = this.theValue + "*"; this.getToken (); }return this.generateResidueSpecCode (JS.T.o (1073741824, res)); } }); Clazz.defineMethod (c$, "clauseSequenceSpec", function () { if (this.tokPeek () == 268435633) return (this.getToken () != null); var seqToken = this.getSequenceCode (false); if (seqToken == null) return false; var tok = this.tokPeek (); if (tok == 268435616 || tok == 2 && this.intPeek () < 0) { if (tok == 268435616) { this.tokenNext (); } else { var i = -this.intPeek (); this.tokenNext ().intValue = i; this.returnToken (); }seqToken.tok = 1073742363; this.generateResidueSpecCode (seqToken); return this.addTokenToPostfixToken (this.getSequenceCode (true)); }return this.generateResidueSpecCode (seqToken); }); Clazz.defineMethod (c$, "getSequenceCode", function (isSecond) { var seqcode = 2147483647; var seqvalue = 2147483647; switch (this.tokPeek ()) { case 5: seqcode = this.tokenNext ().intValue; break; case 2: seqvalue = this.tokenNext ().intValue; break; default: if (!isSecond) return null; } return JS.T.tv (1073742362, seqvalue, Integer.$valueOf (seqcode)); }, "~B"); Clazz.defineMethod (c$, "clauseChainSpec", function (tok) { this.tokenNext (); tok = this.tokPeek (); var strChain; if (this.isTerminator (tok)) { strChain = " "; } else { switch (tok) { case 268435633: return (this.getToken () != null); case 2: this.getToken (); var val = this.theToken.intValue; if (val < 0 || val > 9999) return this.error (8); strChain = "" + val; break; case 4: this.vwr.getChainID ("a", true); default: strChain = "" + this.getToken ().value; break; } if (strChain.length == 0) strChain = " "; else if (strChain.equals ("?")) return true; }var chain = this.vwr.getChainID (strChain, false); return this.generateResidueSpecCode (JS.T.tv (1073742357, chain, "spec_chain")); }, "~N"); Clazz.defineMethod (c$, "clauseAlternateSpec", function () { this.tokenNext (); if (this.isTerminator (this.tokPeek ())) return this.generateResidueSpecCode (JS.T.o (1073742355, null)); switch (this.getToken ().tok) { case 268435633: case 4: case 2: case 1073741824: case 805306401: case 1111492629: case 1111492630: case 1111492631: case 1140850705: break; default: return this.error (10); } return this.generateResidueSpecCode (JS.T.o (1073742355, this.theToken.value)); }); Clazz.defineMethod (c$, "isTerminator", function (tok) { switch (tok) { case 0: case 268435632: case 268435552: case 268435536: case 268435568: case 268435504: case 268435473: case 1073742338: return true; default: return false; } }, "~N"); Clazz.defineMethod (c$, "clauseModelSpec", function () { this.getToken (); switch (this.tokPeek ()) { case 268435633: this.getToken (); return true; case 2: return this.generateResidueSpecCode (JS.T.o (1073742358, Integer.$valueOf (this.getToken ().intValue))); case 3: return this.generateResidueSpecCode (JS.T.tv (1073742358, this.fixModelSpec (this.getToken ()), this.theValue)); case 268435504: case 1073742338: case 0: return this.generateResidueSpecCode (JS.T.o (1073742358, Integer.$valueOf (1))); } return this.error (10); }); Clazz.defineMethod (c$, "fixModelSpec", function (token) { var ival = token.intValue; if (ival == 2147483647) { var f = (this.theValue).floatValue (); if (f == Clazz.floatToInt (f)) ival = (Clazz.floatToInt (f)) * 1000000; if (ival < 0) ival = 2147483647; }return ival; }, "JS.T"); Clazz.defineMethod (c$, "clauseAtomSpec", function () { if (!this.tokenNextTok (1073742336)) return this.error (7); if (this.getToken () == null) return true; var atomSpec = ""; if (this.theToken.tok == 2) { atomSpec += "" + this.theToken.intValue; if (this.getToken () == null) return this.error (7); }if (this.theToken.tok == 268435633) return true; atomSpec += "" + this.theToken.value; if (this.tokPeekIs (268435633)) { this.tokenNext (); atomSpec += "'"; }return this.generateResidueSpecCode (JS.T.tv (1073742356, this.vwr.getJBR ().lookupSpecialAtomID (atomSpec.toUpperCase ()), atomSpec)); }); c$.errorString = Clazz.defineMethod (c$, "errorString", function (iError, value, more, translated) { var doTranslate = false; if (!translated && (doTranslate = J.i18n.GT.getDoTranslate ()) == true) J.i18n.GT.setDoTranslate (false); var msg; switch (iError) { default: msg = "Unknown compiler error message number: " + iError; break; case 0: msg = J.i18n.GT.$ ("bad argument count"); break; case 1: msg = J.i18n.GT.$ ("invalid context for {0}"); break; case 2: msg = J.i18n.GT.$ ("command expected"); break; case 3: msg = J.i18n.GT.$ ("{ number number number } expected"); break; case 4: msg = J.i18n.GT.$ ("unexpected end of script command"); break; case 5: msg = J.i18n.GT.$ ("end of expression expected"); break; case 6: msg = J.i18n.GT.$ ("identifier or residue specification expected"); break; case 7: msg = J.i18n.GT.$ ("invalid atom specification"); break; case 8: msg = J.i18n.GT.$ ("invalid chain specification"); break; case 9: msg = J.i18n.GT.$ ("invalid expression token: {0}"); break; case 10: msg = J.i18n.GT.$ ("invalid model specification"); break; case 11: msg = J.i18n.GT.$ ("missing END for {0}"); break; case 12: msg = J.i18n.GT.$ ("number expected"); break; case 13: msg = J.i18n.GT.$ ("number or variable name expected"); break; case 14: msg = J.i18n.GT.$ ("residue specification (ALA, AL?, A*) expected"); break; case 15: msg = J.i18n.GT.$ ("{0} expected"); break; case 16: msg = J.i18n.GT.$ ("{0} unexpected"); break; case 17: msg = J.i18n.GT.$ ("unrecognized expression token: {0}"); break; case 18: msg = J.i18n.GT.$ ("unrecognized {0} parameter"); break; case 19: msg = J.i18n.GT.$ ("unrecognized token: {0}"); break; } if (msg.indexOf ("{0}") < 0) { if (value != null) msg += ": " + value; } else { msg = JU.PT.rep (msg, "{0}", value); if (msg.indexOf ("{1}") >= 0) msg = JU.PT.rep (msg, "{1}", more); else if (more != null) msg += ": " + more; }if (!translated) J.i18n.GT.setDoTranslate (doTranslate); return msg; }, "~N,~S,~S,~B"); Clazz.defineMethod (c$, "commandExpected", function () { this.ichToken = this.ichCurrentCommand; return this.error (2); }); Clazz.defineMethod (c$, "error", function (error) { return this.errorIntStr2 (error, null, null); }, "~N"); Clazz.defineMethod (c$, "errorStr", function (error, value) { return this.errorIntStr2 (error, value, null); }, "~N,~S"); Clazz.defineMethod (c$, "errorIntStr2", function (iError, value, more) { var strError = JS.ScriptTokenParser.errorString (iError, value, more, true); var strUntranslated = (J.i18n.GT.getDoTranslate () ? JS.ScriptTokenParser.errorString (iError, value, more, false) : null); return this.errorStr2 (strError, strUntranslated); }, "~N,~S,~S"); Clazz.defineMethod (c$, "isError", function () { return this.errorMessage != null; }); Clazz.defineMethod (c$, "errorStr2", function (errorMessage, strUntranslated) { this.errorMessage = errorMessage; this.errorMessageUntranslated = strUntranslated; return false; }, "~S,~S"); Clazz.defineStatics (c$, "ERROR_badArgumentCount", 0, "ERROR_badContext", 1, "ERROR_commandExpected", 2, "ERROR_endOfCommandUnexpected", 4, "ERROR_invalidExpressionToken", 9, "ERROR_missingEnd", 11, "ERROR_tokenExpected", 15, "ERROR_tokenUnexpected", 16, "ERROR_unrecognizedParameter", 18, "ERROR_unrecognizedToken", 19, "ERROR_coordinateExpected", 3, "ERROR_endOfExpressionExpected", 5, "ERROR_identifierOrResidueSpecificationExpected", 6, "ERROR_invalidAtomSpecification", 7, "ERROR_invalidChainSpecification", 8, "ERROR_invalidModelSpecification", 10, "ERROR_numberExpected", 12, "ERROR_numberOrVariableNameExpected", 13, "ERROR_residueSpecificationExpected", 14, "ERROR_unrecognizedExpressionToken", 17); });