From: <ha...@us...> - 2006-03-09 17:05:31
|
Revision: 4559 Author: hansonr Date: 2006-03-09 09:05:26 -0800 (Thu, 09 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4559&view=rev Log Message: ----------- fixing compiler not trapping errors. Adds tokenNext(int aToken) Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-09 16:02:26 UTC (rev 4558) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-09 17:05:26 UTC (rev 4559) @@ -1,5 +1,4 @@ -/* $RCSfile$ - * $Author$ + /* $Author$ * $Date$ * $Revision$ * @@ -923,6 +922,11 @@ return atokenInfix[itokenInfix++]; } + boolean tokenNext(int tok) { + Token token = tokenNext(); + return (token != null && token.tok == tok); + } + Object valuePeek() { if (itokenInfix == atokenInfix.length) return null; @@ -1000,7 +1004,7 @@ tokenNext(); if (! clauseOr()) return false; - if (tokenNext().tok != Token.rightparen) + if (! tokenNext(Token.rightparen)) return rightParenthesisExpected(); return true; } @@ -1027,10 +1031,12 @@ boolean clauseWithin() { tokenNext(); // WITHIN - if (tokenNext().tok != Token.leftparen) // ( + if (! tokenNext(Token.leftparen)) // ( return leftParenthesisExpected(); Object distance; Token tokenDistance = tokenNext(); // distance + if (tokenDistance == null) + return numberOrKeywordExpected(); switch(tokenDistance.tok) { case Token.integer: distance = new Float((tokenDistance.intValue * 4) / 1000f); @@ -1044,23 +1050,23 @@ default: return numberOrKeywordExpected(); } - if (tokenNext().tok != Token.opOr) // , + if (! tokenNext(Token.opOr)) // , return commaExpected(); if (! clauseOr()) // *expression* return false; - if (tokenNext().tok != Token.rightparen) // )T + if (! tokenNext(Token.rightparen)) // )T return rightParenthesisExpected(); return addTokenToPostfix(new Token(Token.within, distance)); } boolean clauseSubstructure() { tokenNext(); // substructure - if (tokenNext().tok != Token.leftparen) // ( + if (! tokenNext(Token.leftparen)) // ( return leftParenthesisExpected(); Token tokenSmiles = tokenNext(); // "smiles" - if (tokenSmiles.tok != Token.string) + if (tokenSmiles == null || tokenSmiles.tok != Token.string) return stringExpected(); - if (tokenNext().tok != Token.rightparen) // ) + if (! tokenNext(Token.rightparen)) // ) return rightParenthesisExpected(); return addTokenToPostfix(new Token(Token.substructure, tokenSmiles.value)); } @@ -1149,26 +1155,36 @@ return true; } Token tokenT = tokenNext(); + if (tokenT == null) + return false; if (tokenT.tok == Token.leftsquare) { log("I see a left square bracket"); // FIXME mth -- maybe need to deal with asterisks here too - tokenT = tokenNext(); if (tokenT == null) return false; + tokenT = tokenNext(); + if (tokenT == null) + return false; String strSpec = ""; if (tokenT.tok == Token.plus) { strSpec = "+"; tokenT = tokenNext(); + if (tokenT == null) + return false; } // what a hack :-( int tok = tokenT.tok; if (tok == Token.integer) { strSpec += tokenT.value; - tokenT = tokenNext(); if (tokenT == null) return false; + tokenT = tokenNext(); + if (tokenT == null) + return false; tok = tokenT.tok; } if (tok == Token.identifier || tok == Token.set || tok == Token.x || tok == Token.y || tok == Token.z) { strSpec += tokenT.value; - tokenT = tokenNext(); if (tokenT == null) return false; + tokenT = tokenNext(); + if (tokenT == null) + return false; tok = tokenT.tok; } if (strSpec == "") @@ -1371,6 +1387,8 @@ return true; } Token tokenModel = tokenNext(); + if (tokenModel == null) + return invalidModelSpecification(); switch (tokenModel.tok) { case Token.string: case Token.integer: @@ -1387,7 +1405,7 @@ } boolean clauseAtomSpec() { - if (tokenNext().tok != Token.dot) + if (! tokenNext(Token.dot)) return invalidAtomSpecification(); Token tokenAtomSpec = tokenNext(); if (tokenAtomSpec == null) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-03-10 21:57:42
|
Revision: 4566 Author: hansonr Date: 2006-03-10 13:57:37 -0800 (Fri, 10 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4566&view=rev Log Message: ----------- just removing dangling debug comment I had forgotten to remove Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-10 21:42:52 UTC (rev 4565) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-10 21:57:37 UTC (rev 4566) @@ -631,7 +631,6 @@ case '<': case '=': case '>': - System.out.println("compiler < " + ichT + " " + cchScript + " "+script.substring(0,ichT+1)); if (ichT < cchScript && ((ch = script.charAt(ichT)) == '<' || ch == '=' || ch == '>')) ++ichT; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-10-18 14:16:07
|
Revision: 5983 http://svn.sourceforge.net/jmol/?rev=5983&view=rev Author: hansonr Date: 2006-10-18 07:15:58 -0700 (Wed, 18 Oct 2006) Log Message: ----------- bug fix for missing end of quotation when quotation mark is at end of line Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-18 14:14:31 UTC (rev 5982) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-18 14:15:58 UTC (rev 5983) @@ -446,6 +446,8 @@ } String getUnescapedStringLiteral() { + if (cchToken < 2) + return ""; StringBuffer sb = new StringBuffer(cchToken - 2); int ichMax = ichToken + cchToken - 1; int ich = ichToken + 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-10-24 23:59:18
|
Revision: 6014 http://svn.sourceforge.net/jmol/?rev=6014&view=rev Author: hansonr Date: 2006-10-24 16:59:13 -0700 (Tue, 24 Oct 2006) Log Message: ----------- fix for [and] not working Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-24 20:57:12 UTC (rev 6013) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-24 23:59:13 UTC (rev 6014) @@ -154,7 +154,9 @@ } break; } - if (tokCommand != Token.nada) { + if (tokCommand == Token.nada) { + bracketsOpen = false; + } else { if (lookingAtString()) { String str = (tokCommand == Token.load && !iHaveQuotedString ? script .substring(ichToken + 1, ichToken + cchToken - 1) @@ -235,7 +237,7 @@ } } else { ident = ident.toLowerCase(); - token = (Token) Token.map.get(ident); + token = bracketsOpen ? null : (Token) Token.map.get(ident); } if (token == null) token = new Token(Token.identifier, ident); @@ -665,6 +667,8 @@ return true; } + boolean bracketsOpen; + boolean lookingAtLookupToken() { if (ichToken == cchScript) return false; @@ -679,14 +683,18 @@ case '{': case '}': case '$': - case '[': - case ']': case '+': case ':': case '@': case '.': case '%': break; + case '[': + bracketsOpen = true; + break; + case ']': + bracketsOpen = false; + break; case '&': case '|': if (ichT < cchScript && script.charAt(ichT) == ch) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-11-19 00:28:13
|
Revision: 6265 http://svn.sourceforge.net/jmol/?rev=6265&view=rev Author: hansonr Date: 2006-11-18 16:28:08 -0800 (Sat, 18 Nov 2006) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-18 23:44:05 UTC (rev 6264) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-19 00:28:08 UTC (rev 6265) @@ -1187,6 +1187,7 @@ out: while ((token = tokenNext()) != null) { switch (token.tok) { case Token.none: + case Token.all: bs = null; if (tokenNext().tok != Token.rightbrace || iPrev >= 0) return endOfExpressionExpected(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-11-24 17:18:52
|
Revision: 6317 http://svn.sourceforge.net/jmol/?rev=6317&view=rev Author: hansonr Date: 2006-11-24 09:18:51 -0800 (Fri, 24 Nov 2006) Log Message: ----------- cleaning Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-24 16:58:49 UTC (rev 6316) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-24 17:18:51 UTC (rev 6317) @@ -242,11 +242,9 @@ // if an identifier is a single character long, then // allocate a new Token with the original character preserved if (ident.length() == 1) { - token = (Token) Token.map.get(ident); - if (token == null) { + if ((token = (Token) Token.map.get(ident)) == null) { String lowerCaseIdent = ident.toLowerCase(); - token = (Token) Token.map.get(lowerCaseIdent); - if (token != null) + if ((token = (Token) Token.map.get(lowerCaseIdent)) != null) token = new Token(token.tok, token.intValue, ident); } } else { @@ -1238,17 +1236,19 @@ boolean clauseComparator() { Token tokenAtomProperty = tokenNext(); Token tokenComparator = tokenNext(); - if (tokenComparator == null || (tokenComparator.tok & Token.comparator) == 0) + if (tokenComparator == null + || (tokenComparator.tok & Token.comparator) == 0) return comparisonOperatorExpected(); Token tokenValue = tokenNext(); if (tokenValue == null) return numberExpected(); boolean isNegative = (tokenValue.tok == Token.hyphen); - if (isNegative) + if (isNegative) { tokenValue = tokenNext(); + if (tokenValue == null) + return numberExpected(); + } int val = Integer.MAX_VALUE; - if (tokenValue == null) - return numberExpected(); if (tokenValue.tok == Token.decimal) { float vf = ((Float) tokenValue.value).floatValue(); switch (tokenAtomProperty.tok) { @@ -1401,12 +1401,10 @@ tokenNext(); // ( tok = tokPeek(); if (tok == Token.integer) { - token = tokenNext(); // minimum # or exact # of bonds (optional) - if (token.intValue < 0) + min = max = tokenNext().intValue; // minimum # or exact # of bonds (optional) + if (min < 0) return nonnegativeIntegerExpected(); - min = max = token.intValue; - token = tokenNext(); - if (token == null) + if ((token = tokenNext()) == null) return commaOrCloseExpected(); tok = token.tok; if (tok == Token.rightparen) // ) @@ -1416,12 +1414,10 @@ tok = tokPeek(); } if (tok == Token.integer) { - token = tokenNext(); // maximum # of bonds (optional) - if (token.intValue < 0) + max = tokenNext().intValue; // maximum # of bonds (optional) + if (max < 0) return nonnegativeIntegerExpected(); - max = token.intValue; - token = tokenNext(); - if (token == null) + if ((token = tokenNext()) == null) return commaOrCloseExpected(); tok = token.tok; if (tok == Token.rightparen) // ) @@ -1534,14 +1530,11 @@ return false; if (tokenT.tok == Token.leftsquare) { String strSpec = ""; - int tok = 0; - while ((tokenT = tokenNext()) != null && tokenT.tok != Token.rightsquare) { + while ((tokenT = tokenNext()) != null && tokenT.tok != Token.rightsquare) strSpec += tokenT.value; - } if (tokenT == null) return false; - tok = tokenT.tok; - if (tok != Token.rightsquare) + if (tokenT.tok != Token.rightsquare) return false; if (strSpec == "") return true; @@ -1728,8 +1721,7 @@ String atomSpec = ""; if (tokenAtomSpec.tok == Token.integer) { atomSpec += "" + tokenAtomSpec.intValue; - tokenAtomSpec = tokenNext(); - if (tokenAtomSpec == null) + if ((tokenAtomSpec = tokenNext()) == null) return invalidAtomSpecification(); } switch (tokenAtomSpec.tok) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-01-12 04:54:57
|
Revision: 6641 http://svn.sourceforge.net/jmol/?rev=6641&view=rev Author: hansonr Date: 2007-01-11 20:54:55 -0800 (Thu, 11 Jan 2007) Log Message: ----------- better error messaging Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-12 04:21:23 UTC (rev 6640) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-12 04:54:55 UTC (rev 6641) @@ -105,9 +105,10 @@ Token[] atokenCommand; int ichCurrentCommand; + boolean isNewSet; boolean iHaveQuotedString = false; - + boolean compile0() { cchScript = script.length(); ichToken = 0; @@ -116,6 +117,7 @@ lineNumbers = new short[lnLength]; lineIndices = new short[lnLength]; error = false; + isNewSet = false; Vector lltoken = new Vector(); Vector ltoken = new Vector(); @@ -269,9 +271,11 @@ tokCommand = tok; if (tokAttr(tokCommand, Token.command)) break; + isNewSet = false; if (!tokAttr(tok, Token.identifier)) return commandExpected(); tokCommand = Token.set; + isNewSet = true; break; case Token.set: if (ltoken.size() == 1) { @@ -283,7 +287,7 @@ tokCommand = Token.set; } if (tok != Token.identifier && !tokAttr(tok, Token.setparam)) - return unrecognizedParameter("SET", ident); + return isNewSet ? commandExpected() : unrecognizedParameter("SET", ident); } break; case Token.define: @@ -329,7 +333,7 @@ ltoken.addElement(token); continue; } - if (ltoken.size() == 0) + if (ltoken.size() == 0 || isNewSet && ltoken.size() == 1) return commandExpected(); return unrecognizedToken(script); } @@ -759,7 +763,7 @@ Token tokenCommand = (Token) ltoken.firstElement(); int tokCommand = tokenCommand.tok; int size = ltoken.size(); - if (tokAttr(tokenCommand.intValue, Token.onDefault1) && size == 1) + if (size == 1 && tokenCommand.intValue != Integer.MAX_VALUE && tokAttr(tokenCommand.intValue, Token.onDefault1)) ltoken.addElement(Token.tokenOn); atokenCommand = new Token[ltoken.size()]; ltoken.copyInto(atokenCommand); @@ -803,6 +807,8 @@ // max2, max3, max4, etc. return badArgumentCount(); } + if (isNewSet && size < 3) + return commandExpected(); return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-01-20 19:31:28
|
Revision: 6663 http://svn.sourceforge.net/jmol/?rev=6663&view=rev Author: hansonr Date: 2007-01-20 11:31:26 -0800 (Sat, 20 Jan 2007) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-20 19:19:04 UTC (rev 6662) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-20 19:31:26 UTC (rev 6663) @@ -1711,7 +1711,7 @@ /// error handling private boolean commandExpected() { - greturn compileError(GT._("command expected")); + return compileError(GT._("command expected")); } private boolean invalidExpressionToken(String ident) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-02-21 01:57:46
|
Revision: 6885 http://svn.sourceforge.net/jmol/?rev=6885&view=rev Author: hansonr Date: 2007-02-20 17:57:45 -0800 (Tue, 20 Feb 2007) Log Message: ----------- 11.1.14 comments Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-21 01:05:16 UTC (rev 6884) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-21 01:57:45 UTC (rev 6885) @@ -61,6 +61,18 @@ this.viewer = viewer; } + /** + * allows for two kinds of comments. + * + * 1) /** .... ** / (closing involved two asterisks and slash together, but that can't be shown here. + * 2) /* ..... * / (same deal here). + * + * The reason is that /* ... * / will appear as standard in MOVETO command + * but we still might want to escape it, so around that you can have /** .... ** / + * + * @param script + * @return cleaned script + */ static String cleanScriptComments(String script) { int pt, pt1; while ((pt = script.indexOf("/**")) >= 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-02-21 20:30:17
|
Revision: 6896 http://svn.sourceforge.net/jmol/?rev=6896&view=rev Author: hansonr Date: 2007-02-21 12:30:14 -0800 (Wed, 21 Feb 2007) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-21 20:28:36 UTC (rev 6895) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-21 20:30:14 UTC (rev 6896) @@ -1157,9 +1157,7 @@ boolean clauseNot() { if (tokPeek(Token.opNot)) { addTokenToPostfix(tokenNext()); - if (!clauseNot()) - return false; - return true; + return clauseNot(); } return clausePrimitive(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-02-27 00:31:10
|
Revision: 6952 http://svn.sourceforge.net/jmol/?rev=6952&view=rev Author: hansonr Date: 2007-02-26 16:31:05 -0800 (Mon, 26 Feb 2007) Log Message: ----------- 11.1.15 fixing select syntax for addition of "xxx",{...} Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-27 00:14:12 UTC (rev 6951) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-27 00:31:05 UTC (rev 6952) @@ -1119,7 +1119,10 @@ return addTokenToPostfix(token); } + boolean haveString; + private boolean clauseOr(boolean allowComma) { + haveString = false; if (!clauseAnd()) return false; //for simplicity, giving XOR (toggle) same precedence as OR @@ -1127,7 +1130,7 @@ int tok; while ((tok = tokPeek())== Token.opOr || tok == Token.opXor || tok==Token.opToggle|| allowComma && tok == Token.comma) { - if (tok == Token.comma) + if (tok == Token.comma && !haveString) addNextTokenIf(Token.comma, Token.tokenOr); else addNextToken(); @@ -1166,11 +1169,13 @@ if (!tokAttr(tok, Token.predefinedset)) break; // fall into the code and below and just add the token - case Token.string: case Token.all: case Token.none: case Token.bitset: return addNextToken(); + case Token.string: + haveString = true; + return addNextToken(); case Token.nada: return endOfCommandUnexpected(); case Token.define: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-02-27 13:35:23
|
Revision: 6965 http://svn.sourceforge.net/jmol/?rev=6965&view=rev Author: hansonr Date: 2007-02-27 05:35:22 -0800 (Tue, 27 Feb 2007) Log Message: ----------- compiler cleanup Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-27 13:25:57 UTC (rev 6964) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-27 13:35:22 UTC (rev 6965) @@ -1054,6 +1054,12 @@ return atokenInfix[itokenInfix].intValue; } + private Object valuePeek() { + if (moreTokens()) + return atokenInfix[itokenInfix].value; + return ""; + } + /** * increments the pointer; does NOT set theToken or theValue * @return the next token @@ -1121,7 +1127,7 @@ return (tokPeek(tok) && addNextToken()); } - private boolean addNextTokenIf(int tok, Token token) { + private boolean addSubstituteTokenIf(int tok, Token token) { if (!tokPeek(tok)) return false; itokenInfix++; @@ -1140,7 +1146,7 @@ while ((tok = tokPeek())== Token.opOr || tok == Token.opXor || tok==Token.opToggle|| allowComma && tok == Token.comma) { if (tok == Token.comma && !haveString) - addNextTokenIf(Token.comma, Token.tokenOr); + addSubstituteTokenIf(Token.comma, Token.tokenOr); else addNextToken(); if (!clauseAnd()) @@ -1850,9 +1856,7 @@ } private boolean unrecognizedExpressionToken() { - String value = (itokenInfix == atokenInfix.length ? "" - : atokenInfix[itokenInfix].value.toString()); - return compileError(GT._("unrecognized expression token: {0}", "" + value)); + return compileError(GT._("unrecognized expression token: {0}", "" + valuePeek())); } private boolean comparisonOperatorExpected() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-09-10 02:37:14
|
Revision: 8231 http://jmol.svn.sourceforge.net/jmol/?rev=8231&view=rev Author: hansonr Date: 2007-09-09 19:37:07 -0700 (Sun, 09 Sep 2007) Log Message: ----------- version=11.3.18 # critical bug fix for 11.3.17 -- limited set command length Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-09-09 23:49:55 UTC (rev 8230) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-09-10 02:37:07 UTC (rev 8231) @@ -1047,7 +1047,10 @@ } size -= nDefined; - + if (isNewSet && size < 3) + return commandExpected(); + if (isSetOrDefine) //intValue is NOT of this nature + return true; int allowedLen = (tokenCommand.intValue & 0x0F) + 1; if (!tokAttr(tokenCommand.intValue, Token.varArgCount)) { if (size > allowedLen) @@ -1058,8 +1061,6 @@ // max2, max3, max4, etc. return badArgumentCount(); } - if (isNewSet && size < 3) - return commandExpected(); return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-11-01 14:04:45
|
Revision: 8554 http://jmol.svn.sourceforge.net/jmol/?rev=8554&view=rev Author: hansonr Date: 2007-11-01 07:04:41 -0700 (Thu, 01 Nov 2007) Log Message: ----------- version=11.3.40_dev # new feature: set xxxx where xxxx is not a Jmol variable causes ERROR Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-11-01 13:46:09 UTC (rev 8553) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-11-01 14:04:41 UTC (rev 8554) @@ -808,7 +808,7 @@ } else if (nTokens == 2 && tok == Token.opEQ) { // we are looking at @x =.... just insert a SET command // and ignore the =. It's the same as set @x ... - ltoken.insertElementAt(Token.getTokenFromName("set"), 0); + ltoken.insertElementAt(Token.tokenSet, 0); continue; } else { // we are looking at the expression This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mig...@us...> - 2006-03-22 00:05:35
|
Revision: 4677 Author: migueljmol Date: 2006-03-21 16:05:31 -0800 (Tue, 21 Mar 2006) ViewCVS: http://svn.sourceforge.net/jmol/?rev=4677&view=rev Log Message: ----------- explicitly set alpha channel value when compiling [R,G,B] colors Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-21 17:13:07 UTC (rev 4676) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-03-22 00:05:31 UTC (rev 4677) @@ -1597,9 +1597,11 @@ atoken[i+4].tok == Token.opOr && atoken[i+5].tok == Token.integer && atoken[i+6].tok == Token.rightsquare) { - int rgb = atoken[i+1].intValue << 16 | atoken[i+3].intValue << 8 | - atoken[i+5].intValue; - atokenNew[i] = new Token(Token.colorRGB, rgb, "[R,G,B]"); + int argb = (0xFF000000 | + atoken[i+1].intValue << 16 | + atoken[i+3].intValue << 8 | + atoken[i+5].intValue); + atokenNew[i] = new Token(Token.colorRGB, argb, "[R,G,B]"); return true; } // chime also accepts [xRRGGBB] @@ -1611,8 +1613,8 @@ if (hex.length() == 7 && hex.charAt(0) == 'x') { try { - int rgb = Integer.parseInt(hex.substring(1), 16); - atokenNew[i] = new Token(Token.colorRGB, rgb, "[xRRGGBB]"); + int argb = 0xFF000000 | Integer.parseInt(hex.substring(1), 16); + atokenNew[i] = new Token(Token.colorRGB, argb, "[xRRGGBB]"); return true; } catch (NumberFormatException e) { } @@ -1620,5 +1622,4 @@ } return badRGBColor(); } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-09-25 04:04:54
|
Revision: 5710 http://svn.sourceforge.net/jmol/?rev=5710&view=rev Author: hansonr Date: 2006-09-24 21:04:50 -0700 (Sun, 24 Sep 2006) Log Message: ----------- load issue resolved Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-09-25 03:25:20 UTC (rev 5709) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-09-25 04:04:50 UTC (rev 5710) @@ -164,15 +164,12 @@ continue; } if (!iHaveQuotedString && lookingAtSpecialString()) { - int pt = script.indexOf(" ", ichToken); - int pt1 = script.indexOf("{", ichToken); - if (pt < ichToken && pt1 < ichToken) - pt = ichToken + cchToken; - else if (pt > 0 && (pt1 < 0 || pt < pt1)) - cchToken = pt - ichToken; - else - cchToken = pt1 - ichToken; - String str = script.substring(ichToken, pt).trim(); + String str = script.substring(ichToken, ichToken + cchToken).trim(); + int pt = str.indexOf(" "); + if (pt > 0) { + cchToken = pt; + str = str.substring(0, pt); + } ltoken.addElement(new Token(Token.string, str)); iHaveQuotedString = true; continue; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-10-22 01:38:22
|
Revision: 5993 http://svn.sourceforge.net/jmol/?rev=5993&view=rev Author: hansonr Date: 2006-10-21 18:38:16 -0700 (Sat, 21 Oct 2006) Log Message: ----------- scientific notation 1E-3 1e-3 2.3E+3 2E3 -2E13 etc. allowed where a decimal might be allowed. Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-22 00:42:04 UTC (rev 5992) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-22 01:38:16 UTC (rev 5993) @@ -190,8 +190,13 @@ ltoken.addElement(new Token(Token.string, str)); continue; } + float value; + if (!Float.isNaN(value = lookingAtExponential())) { + ltoken.addElement(new Token(Token.decimal, new Float(value))); + continue; + } if (lookingAtDecimal((tokCommand & Token.negnums) != 0)) { - float value = + value = // can't use parseFloat with jvm 1.1 // Float.parseFloat(script.substring(ichToken, ichToken + cchToken)); Float.valueOf(script.substring(ichToken, ichToken + cchToken)) @@ -533,6 +538,52 @@ return cchToken > 0; } + float lookingAtExponential() { + if (ichToken == cchScript) + return Float.NaN; //end + int ichT = ichToken; + boolean isNegative = (script.charAt(ichT) == '-'); + if (isNegative) + ++ichT; + int pt0 = ichT; + boolean digitSeen = false; + char ch = 'X'; + while (ichT < cchScript && isDigit(ch = script.charAt(ichT))) { + ++ichT; + digitSeen = true; + } + if (ichT < cchScript && ch == '.') + ++ichT; + while (ichT < cchScript && isDigit(ch = script.charAt(ichT))) { + ++ichT; + digitSeen = true; + } + if (ichT == cchScript || !digitSeen) + return Float.NaN; //integer + int ptE = ichT; + int factor = 1; + int exp = 0; + boolean isExponential = (ch != 'E' || ch != 'e'); + if (!isExponential || ++ichT == cchScript) + return Float.NaN; + ch = script.charAt(ichT); + if (ch == '-' || ch == '+') { + ichT++; + factor = (ch == '-'? -1 : 1); + } + while (ichT < cchScript && isDigit(ch = script.charAt(ichT))) { + ichT++; + exp = (exp * 10 + ch - '0'); + } + if (exp == 0) + return Float.NaN; + cchToken = ichT - ichToken; + double value = Float.valueOf(script.substring(pt0, ptE)).doubleValue(); + value *= (isNegative ? -1 : 1) * Math.pow(10, factor * exp); + System.out.println("compiler "+ script + "=" + value); + return (float) value; + } + boolean lookingAtDecimal(boolean allowNegative) { if (ichToken == cchScript) return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-10-23 01:58:39
|
Revision: 6000 http://svn.sourceforge.net/jmol/?rev=6000&view=rev Author: hansonr Date: 2006-10-22 18:58:32 -0700 (Sun, 22 Oct 2006) Log Message: ----------- yeiks! Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-22 19:12:46 UTC (rev 5999) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-10-23 01:58:32 UTC (rev 6000) @@ -563,7 +563,7 @@ int ptE = ichT; int factor = 1; int exp = 0; - boolean isExponential = (ch != 'E' || ch != 'e'); + boolean isExponential = (ch == 'E' || ch == 'e'); if (!isExponential || ++ichT == cchScript) return Float.NaN; ch = script.charAt(ichT); @@ -585,7 +585,6 @@ cchToken = ichT - ichToken; double value = Float.valueOf(script.substring(pt0, ptE)).doubleValue(); value *= (isNegative ? -1 : 1) * Math.pow(10, factor * exp); - System.out.println("compiler "+ script + "=" + value); return (float) value; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-11-24 16:58:51
|
Revision: 6316 http://svn.sourceforge.net/jmol/?rev=6316&view=rev Author: hansonr Date: 2006-11-24 08:58:49 -0800 (Fri, 24 Nov 2006) Log Message: ----------- missing null token escapes Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-24 16:02:29 UTC (rev 6315) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-24 16:58:49 UTC (rev 6316) @@ -1097,13 +1097,19 @@ return atokenInfix[itokenInfix].tok; } + boolean tokPeek(int tok) { + if (itokenInfix == atokenInfix.length) + return false; + return (atokenInfix[itokenInfix].tok == tok); + } + boolean clauseOr() { if (!clauseAnd()) return false; //for simplicity, giving XOR (toggle) same precedence as OR //OrNot: First OR, but if that makes no change, then NOT (special toggle) - while (tokPeek() == Token.opOr || tokPeek() == Token.opXor - || tokPeek() == Token.opToggle) { + while (tokPeek(Token.opOr) || tokPeek(Token.opXor) + || tokPeek(Token.opToggle)) { Token tokenOr = tokenNext(); if (!clauseAnd()) return false; @@ -1115,7 +1121,7 @@ boolean clauseAnd() { if (!clauseNot()) return false; - while (tokPeek() == Token.opAnd) { + while (tokPeek(Token.opAnd)) { Token tokenAnd = tokenNext(); if (!clauseNot()) return false; @@ -1125,7 +1131,7 @@ } boolean clauseNot() { - if (tokPeek() == Token.opNot) { + if (tokPeek(Token.opNot)) { Token tokenNot = tokenNext(); if (!clauseNot()) return false; @@ -1201,7 +1207,7 @@ case Token.none: case Token.all: bs = null; - if (tokenNext().tok != Token.rightbrace || iPrev >= 0) + if (!tokenNext(Token.rightbrace) || iPrev >= 0) return endOfExpressionExpected(); break out; case Token.rightbrace: @@ -1215,7 +1221,7 @@ case Token.colon: if (iPrev >= 0) { token = tokenNext(); - if (token.tok != Token.integer) + if (token == null || token.tok != Token.integer) return invalidExpressionToken(token.toString()); for (int i = token.intValue; i >= iPrev; i--) bs.set(i); @@ -1279,6 +1285,8 @@ if (!tokenNext(Token.opEQ)) // = return equalSignExpected(); Token coord = tokenNext(); // 555 == {1 1 1} + if (coord == null) + return coordinateExpected(); if (coord.tok == Token.integer) { int nnn = coord.intValue; cell.x = nnn / 100 - 4; @@ -1296,7 +1304,7 @@ cell.x = coord.intValue; else cell.x = ((Float) coord.value).floatValue(); - if (tokPeek() == Token.opOr) // , + if (tokPeek(Token.opOr)) // , tokenNext(); coord = tokenNext(); // j if (coord == null || coord.tok != Token.integer @@ -1306,7 +1314,7 @@ cell.y = coord.intValue; else cell.y = ((Float) coord.value).floatValue(); - if (tokPeek() == Token.opOr) // , + if (tokPeek(Token.opOr)) // , tokenNext(); coord = tokenNext(); // k if (coord == null || coord.tok != Token.integer @@ -1370,7 +1378,7 @@ } if (!tokenNext(Token.opOr)) // , return commaExpected(); - if (tokPeek() == Token.leftbrace) { + if (tokPeek(Token.leftbrace)) { return addTokenToPostfix(new Token(Token.within, new Float(Float.NaN))); } if (!clauseOr()) // *expression* @@ -1388,7 +1396,7 @@ Token token; tokenNext(); // Connected while (!iHaveExpression) { - if (tokPeek() != Token.leftparen) + if (!tokPeek(Token.leftparen)) break; tokenNext(); // ( tok = tokPeek(); @@ -1398,6 +1406,8 @@ return nonnegativeIntegerExpected(); min = max = token.intValue; token = tokenNext(); + if (token == null) + return commaOrCloseExpected(); tok = token.tok; if (tok == Token.rightparen) // ) break; @@ -1407,10 +1417,12 @@ } if (tok == Token.integer) { token = tokenNext(); // maximum # of bonds (optional) - if (token.intValue < 0) + if (token.intValue < 0) return nonnegativeIntegerExpected(); max = token.intValue; token = tokenNext(); + if (token == null) + return commaOrCloseExpected(); tok = token.tok; if (tok == Token.rightparen) // ) break; @@ -1513,7 +1525,7 @@ } boolean clauseResNameSpec() { - if (tokPeek() == Token.asterisk) { + if (tokPeek(Token.asterisk)) { tokenNext(); return true; } @@ -1549,7 +1561,7 @@ //check for a * in the next token, which //would indicate this must be a name with wildcard - if (tokPeek() == Token.asterisk) { + if (tokPeek(Token.asterisk)) { tokenNext(); return generateResidueSpecCode(new Token(Token.identifier, tokenT.value + "*")); @@ -1559,7 +1571,7 @@ boolean clauseResNumSpec() { log("clauseResNumSpec()"); - if (tokPeek() == Token.asterisk) { + if (tokPeek(Token.asterisk)) { tokenNext(); return true; } @@ -1688,7 +1700,7 @@ int tok = tokPeek(); if (tok == Token.colon || tok == Token.slash) tokenNext(); - if (tokPeek() == Token.asterisk) { + if (tokPeek(Token.asterisk)) { tokenNext(); return true; } @@ -1729,7 +1741,7 @@ return invalidAtomSpecification(); } atomSpec += (String) tokenAtomSpec.value; - if (tokPeek() == Token.asterisk) { + if (tokPeek(Token.asterisk)) { tokenNext(); // this one is a '*' as a prime, not a wildcard atomSpec += "*"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-11-25 19:15:20
|
Revision: 6341 http://svn.sourceforge.net/jmol/?rev=6341&view=rev Author: hansonr Date: 2006-11-25 11:15:11 -0800 (Sat, 25 Nov 2006) Log Message: ----------- minor bug -- logmessages Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-25 17:05:34 UTC (rev 6340) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-11-25 19:15:11 UTC (rev 6341) @@ -74,7 +74,7 @@ this.filename = filename; this.isSilent = isSilent; this.script = cleanScriptComments(script); - logMessages = (!isPredefining && Logger.isActiveLevel(Logger.LEVEL_DEBUG)); + logMessages = (!isSilent && !isPredefining && Logger.isActiveLevel(Logger.LEVEL_DEBUG)); lineNumbers = lineIndices = null; aatokenCompiled = null; errorMessage = errorLine = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-12-10 00:21:07
|
Revision: 6432 http://svn.sourceforge.net/jmol/?rev=6432&view=rev Author: hansonr Date: 2006-12-09 16:21:06 -0800 (Sat, 09 Dec 2006) Log Message: ----------- minor application-only bug fix Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-12-10 00:20:30 UTC (rev 6431) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-12-10 00:21:06 UTC (rev 6432) @@ -1699,7 +1699,7 @@ getToken(); if (isToken(Token.asterisk)) return true; - if (isToken(Token.nada)) + if (isToken(Token.nada) || theToken == null) return invalidModelSpecification(); switch (theToken.tok) { case Token.string: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2006-12-31 04:17:42
|
Revision: 6553 http://svn.sourceforge.net/jmol/?rev=6553&view=rev Author: hansonr Date: 2006-12-30 20:17:41 -0800 (Sat, 30 Dec 2006) Log Message: ----------- adds select atomX, atomY, atomZ comparison atom properties Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-12-31 04:15:54 UTC (rev 6552) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2006-12-31 04:17:41 UTC (rev 6553) @@ -1291,6 +1291,9 @@ case Token.phi: case Token.surfacedistance: case Token.temperature: + case Token.atomX: + case Token.atomY: + case Token.atomZ: // int = decimal here, but comparator has to use decmimal * 100 val *= 100; // fall through This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-01-04 21:40:08
|
Revision: 6579 http://svn.sourceforge.net/jmol/?rev=6579&view=rev Author: hansonr Date: 2007-01-04 13:40:07 -0800 (Thu, 04 Jan 2007) Log Message: ----------- compiler fix Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-04 21:22:39 UTC (rev 6578) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-04 21:40:07 UTC (rev 6579) @@ -763,6 +763,7 @@ if ((tokenCommand.intValue & Token.onDefault1) == Token.onDefault1 && size == 1) ltoken.addElement(Token.tokenOn); + atokenCommand = new Token[ltoken.size()]; ltoken.copyInto(atokenCommand); if (logMessages) { @@ -789,6 +790,8 @@ //check statement length + size = atokenCommand.length; + int allowedLen = (tokenCommand.intValue & 0x0F) + 1; if ((tokenCommand.intValue & Token.varArgCount) == 0) { if (size > allowedLen) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-01-20 19:19:10
|
Revision: 6662 http://svn.sourceforge.net/jmol/?rev=6662&view=rev Author: hansonr Date: 2007-01-20 11:19:04 -0800 (Sat, 20 Jan 2007) Log Message: ----------- 11.1 bug fixes disabling of embedded commands Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-20 15:10:39 UTC (rev 6661) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-01-20 19:19:04 UTC (rev 6662) @@ -122,6 +122,7 @@ Vector lltoken = new Vector(); Vector ltoken = new Vector(); int tokCommand = Token.nada; + isNewSet = false; for (int nTokens = 0; true; ichToken += cchToken) { if (lookingAtLeadingWhitespace()) continue; @@ -160,6 +161,7 @@ } if (tokCommand == Token.nada) { bracketsOpen = false; + isNewSet = false; } else { if (lookingAtString()) { if (cchToken < 0) @@ -271,7 +273,6 @@ tokCommand = tok; if (tokAttr(tokCommand, Token.command)) break; - isNewSet = false; if (!tokAttr(tok, Token.identifier)) return commandExpected(); tokCommand = Token.set; @@ -1710,7 +1711,7 @@ /// error handling private boolean commandExpected() { - return compileError(GT._("command expected")); + greturn compileError(GT._("command expected")); } private boolean invalidExpressionToken(String ident) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2007-02-08 04:44:13
|
Revision: 6714 http://svn.sourceforge.net/jmol/?rev=6714&view=rev Author: hansonr Date: 2007-02-07 20:44:12 -0800 (Wed, 07 Feb 2007) Log Message: ----------- frame/compiler fix Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-08 03:40:15 UTC (rev 6713) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2007-02-08 04:44:12 UTC (rev 6714) @@ -1113,8 +1113,7 @@ case Token.substructure: return clauseSubstructure(); case Token.decimal: - addTokenToPostfix(new Token(Token.all)); - return generateResidueSpecCode(new Token(Token.spec_model, getToken().intValue, null)); + return addTokenToPostfix(new Token(Token.spec_model, getToken().intValue, null)); case Token.hyphen: // selecting a negative residue spec case Token.integer: case Token.seqcode: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |