Package org.jmol.script
Class ScriptExpr
- java.lang.Object
-
- org.jmol.script.ScriptError
-
- org.jmol.script.ScriptParam
-
- org.jmol.script.ScriptExpr
-
- All Implemented Interfaces:
JmolScriptEvaluator
- Direct Known Subclasses:
ScriptEval
abstract class ScriptExpr extends ScriptParam
The ScriptExpr class holds the main functions for processing mathematical and atom selection expressions. The two methods, parameterExpression and atomExpression are the key starting points for this processing.
-
-
Field Summary
Fields Modifier and Type Field Description private CmdExtcmdExtbooleandebugHighprivate IsoExtisoExtprivate MathExtmathExtprivate javajs.util.P3ptTempprivate SmilesExtsmilesExtprotected T[]tempStatement-
Fields inherited from class org.jmol.script.ScriptParam
contextVariables, coordinatesAreFractional, fractionalPoint, isBondSet, iToken, slen, st, theTok, theToken, thisContext
-
Fields inherited from class org.jmol.script.ScriptError
chk, error, ERROR_axisExpected, ERROR_backgroundModelError, ERROR_badArgumentCount, ERROR_badMillerIndices, ERROR_badRGBColor, ERROR_booleanExpected, ERROR_booleanOrNumberExpected, ERROR_booleanOrWhateverExpected, ERROR_cannotSet, ERROR_colorExpected, ERROR_colorOrPaletteRequired, ERROR_commandExpected, ERROR_coordinateOrNameOrExpressionRequired, ERROR_drawObjectNotDefined, ERROR_endOfStatementUnexpected, ERROR_expressionExpected, ERROR_expressionOrIntegerExpected, ERROR_filenameExpected, ERROR_fileNotFoundException, ERROR_incompatibleArguments, ERROR_insufficientArguments, ERROR_integerExpected, ERROR_integerOutOfRange, ERROR_invalidArgument, ERROR_invalidParameterOrder, ERROR_keywordExpected, ERROR_moCoefficients, ERROR_moIndex, ERROR_moModelError, ERROR_moOccupancy, ERROR_moOnlyOne, ERROR_multipleModelsDisplayedNotOK, ERROR_multipleModelsNotOK, ERROR_noData, ERROR_noPartialCharges, ERROR_noUnitCell, ERROR_numberExpected, ERROR_numberMustBe, ERROR_numberOutOfRange, ERROR_objectNameExpected, ERROR_planeExpected, ERROR_propertyNameExpected, ERROR_spaceGroupNotFound, ERROR_stringExpected, ERROR_stringOrIdentifierExpected, ERROR_tooManyPoints, ERROR_tooManyScriptLevels, ERROR_unrecognizedAtomProperty, ERROR_unrecognizedBondProperty, ERROR_unrecognizedCommand, ERROR_unrecognizedExpression, ERROR_unrecognizedObject, ERROR_unrecognizedParameter, ERROR_unrecognizedParameterWarning, ERROR_unrecognizedShowParameter, ERROR_what, ERROR_writeWhat, errorMessage, errorMessageUntranslated, errorType, iCommandError, ignoreError, vwr
-
-
Constructor Summary
Constructors Constructor Description ScriptExpr()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description BSatomExpression(T[] code, int pcStart, int pcStop, boolean allowRefresh, boolean allowUnderflow, java.lang.Object[] ret, boolean andNotDeleted)BSatomExpressionAt(int index)private BSbitSetForModelFileNumber(int m)protected booleancompareFloat(int tokOperator, float a, float b)protected BScompareFloatData(int tokWhat, float[] data, int tokOperator, float comparisonFloat)private BScompareInt(int tokWhat, int tokOperator, int ival)private BScompareString(int tokWhat, int tokOperator, java.lang.String comparisonString)private booleancompareStringValues(int tokOperator, java.lang.String propertyValue, java.lang.String comparisonValue)protected java.util.Map<java.lang.String,java.lang.Object>getAssocArray(int i)protected BSgetAtomBits(int tokType, java.lang.Object specInfo)java.lang.ObjectgetBitsetProperty(BS bs, int tok, javajs.util.P3 ptRef, javajs.util.P4 planeRef, java.lang.Object tokenValue, java.lang.Object opValue, boolean useAtomMap, int index, boolean asVectorIfAll)private SVgetBitsetPropertySelector(int i, int xTok)CmdExtgetCmdExt()private BSgetComparison(T t, int tokWhat, int tokOp, java.lang.String strOp, float[] data)private java.lang.ObjectgetExt(java.lang.String type)IsoExtgetIsoExt()MathExtgetMathExt()protected static intgetSeqCode(T instruction)SmilesExtgetSmilesExt()private java.lang.ObjectgetStringObjectAsVariable(java.lang.Object obj)protected javajs.util.Lst<SV>listBS(BS bs)protected booleannoCopy(int i, int dir)private java.lang.ObjectparameterExpression(int pt, int ptMax, java.lang.String key, boolean ignoreComma, boolean asVector, int ptAtom, boolean isArrayItem, java.util.Map<java.lang.String,SV> localVars, java.lang.String localVar, boolean isSpecialAssignment)This is the primary driver of the RPN (reverse Polish notation) expression processor.protected booleanparameterExpressionBoolean(int pt, int ptMax)protected javajs.util.Lst<SV>parameterExpressionList(int pt, int ptAtom, boolean isArrayItem)protected booleanparameterExpressionSelect(java.util.Map<java.lang.String,SV> h, T[] where)protected java.lang.StringparameterExpressionString(int pt, int ptMax)protected SVparameterExpressionToken(int pt)private voidsetBitsetProperty(BS bs, int tok, int iValue, float fValue, T tokenValue)protected booleansetStatement(T[] st0, int pt0)provides support for @x and @{....} in statements.protected SVsetVariable(int pt, int ptMax, java.lang.String key, boolean isSet)-
Methods inherited from class org.jmol.script.ScriptParam
atomCenterOrCoordinateParameter, centerParameter, centerParameterForModel, checkLast, checkLength, checkLength23, checkLength34, checkLengthErrorPt, checkToken, floatParameter, floatParameterRange, floatParameterSet, getArgbParam, getArgbParamLast, getArgbParamOrNone, getBondOrderFromString, getContextVariableAsVariable, getFloatEncodedInt, getHklPlane, getMadParameter, getParameter, getPartialBondOrderFromFloatEncodedInt, getPoint3f, getPoint4f, getPointArray, getPointOrPlane, getPointVector, getQuaternionParameter, getToken, getVarParameter, hklParameter, intParameter, intParameterRange, isArrayParameter, isCenterParameter, isColorParam, isFloatParameter, isPoint3f, listParameter, modelNumberParameter, objectNameParameter, optParameterAsString, paramAsStr, planeParameter, setBooleanProperty, setFloatProperty, setIntProperty, setStringProperty, stringParameter, stringParameterSet, tickParamAsStr, tokAt, xypParameter, xyzpParameter
-
Methods inherited from class org.jmol.script.ScriptError
bad, error, errorMore, errorStr, errorStr2, errorString, evalError, getErrorLineMessage, getErrorMessage, getErrorMessageUntranslated, integerOutOfRange, invArg, numberOutOfRange, setCursorWait, setErrorMessage, showStringPrint, warning
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.jmol.api.JmolScriptEvaluator
checkScriptSilent, checkSelect, compileScriptFile, compileScriptString, deleteAtomsInVariables, evalFunctionFloat, evalParallel, evaluateCompiledScript, evaluateExpression, getAllowJSThreads, getAtomBitSet, getNextStatement, getScript, getScriptContext, getThisContext, haltExecution, isExecuting, isPaused, isStateScript, isStepping, isStopped, loadFileResourceAsync, notifyResumeStatus, pauseExecution, pushContextDown, resumeEval, resumePausedExecution, runScript, runScriptBuffer, setCompiler, setDebugging, setObjectPropSafe, setStatic, setViewer, stepPausedExecution, stopScriptThreads
-
-
-
-
Method Detail
-
getCmdExt
public CmdExt getCmdExt()
-
getIsoExt
public IsoExt getIsoExt()
-
getMathExt
public MathExt getMathExt()
-
getSmilesExt
public SmilesExt getSmilesExt()
-
getExt
private java.lang.Object getExt(java.lang.String type)
-
parameterExpressionList
protected javajs.util.Lst<SV> parameterExpressionList(int pt, int ptAtom, boolean isArrayItem) throws ScriptException
- Throws:
ScriptException
-
parameterExpressionString
protected java.lang.String parameterExpressionString(int pt, int ptMax) throws ScriptException- Throws:
ScriptException
-
parameterExpressionBoolean
protected boolean parameterExpressionBoolean(int pt, int ptMax) throws ScriptException- Throws:
ScriptException
-
parameterExpressionToken
protected SV parameterExpressionToken(int pt) throws ScriptException
- Throws:
ScriptException
-
parameterExpressionSelect
protected boolean parameterExpressionSelect(java.util.Map<java.lang.String,SV> h, T[] where) throws ScriptException
- Throws:
ScriptException
-
parameterExpression
private java.lang.Object parameterExpression(int pt, int ptMax, java.lang.String key, boolean ignoreComma, boolean asVector, int ptAtom, boolean isArrayItem, java.util.Map<java.lang.String,SV> localVars, java.lang.String localVar, boolean isSpecialAssignment) throws ScriptExceptionThis is the primary driver of the RPN (reverse Polish notation) expression processor. It handles all math outside of a "traditional" Jmol SELECT/RESTRICT context. [Object atomExpression() takes care of that, and also uses the RPN class.]- Parameters:
pt- token index in statement start of expression or negative for one expression only.ptMax- token index in statement end of expressionkey- variable name for debugging reference only -- null indicates return Boolean -- "" indicates return StringignoreComma-asVector- a flag passed on to RPN;ptAtom- this is a for() or select() function with a specific atom selectedisArrayItem- we are storing A[x] = ... so we need to deliver "x" as welllocalVars- see below -- lists all nested for(x, {exp}, select(y, {ex},...)) variableslocalVar- x or y in above for(), select() examplesisSpecialAssignment- x[n] = ....- Returns:
- either a vector or a value, caller's choice.
- Throws:
ScriptException- errors are thrown directly to the Eval error system.
-
atomExpressionAt
public BS atomExpressionAt(int index) throws ScriptException
- Throws:
ScriptException
-
atomExpression
public BS atomExpression(T[] code, int pcStart, int pcStop, boolean allowRefresh, boolean allowUnderflow, java.lang.Object[] ret, boolean andNotDeleted) throws ScriptException
- Parameters:
code-pcStart-pcStop-allowRefresh-allowUnderflow-ret- -- true return value; may not be a BSandNotDeleted- IGNORED- Returns:
- atom bitset
- Throws:
ScriptException
-
getComparison
private BS getComparison(T t, int tokWhat, int tokOp, java.lang.String strOp, float[] data) throws ScriptException
- Throws:
ScriptException
-
noCopy
protected boolean noCopy(int i, int dir)
-
getAssocArray
protected java.util.Map<java.lang.String,java.lang.Object> getAssocArray(int i) throws ScriptException- Throws:
ScriptException
-
compareFloatData
protected BS compareFloatData(int tokWhat, float[] data, int tokOperator, float comparisonFloat)
- Parameters:
tokWhat-data-tokOperator-comparisonFloat-- Returns:
- BitSet
-
compareFloat
protected boolean compareFloat(int tokOperator, float a, float b)
-
compareString
private BS compareString(int tokWhat, int tokOperator, java.lang.String comparisonString) throws ScriptException
- Throws:
ScriptException
-
compareStringValues
private boolean compareStringValues(int tokOperator, java.lang.String propertyValue, java.lang.String comparisonValue) throws ScriptException- Throws:
ScriptException
-
compareInt
private BS compareInt(int tokWhat, int tokOperator, int ival)
-
getBitsetPropertySelector
private SV getBitsetPropertySelector(int i, int xTok) throws ScriptException
- Throws:
ScriptException
-
getBitsetProperty
public java.lang.Object getBitsetProperty(BS bs, int tok, javajs.util.P3 ptRef, javajs.util.P4 planeRef, java.lang.Object tokenValue, java.lang.Object opValue, boolean useAtomMap, int index, boolean asVectorIfAll) throws ScriptException
- Throws:
ScriptException
-
bitSetForModelFileNumber
private BS bitSetForModelFileNumber(int m)
-
getStringObjectAsVariable
private java.lang.Object getStringObjectAsVariable(java.lang.Object obj)
-
getAtomBits
protected BS getAtomBits(int tokType, java.lang.Object specInfo)
-
getSeqCode
protected static int getSeqCode(T instruction)
-
setVariable
protected SV setVariable(int pt, int ptMax, java.lang.String key, boolean isSet) throws ScriptException
- Parameters:
pt- starting point in command token sequenceptMax- ending point in command token sequenec, possibly -1 for "all"key- the variable name to save the result in. This must be a standard user variable, either local or globalisSet- from Set ... or Var .... or just xxx ....- Returns:
- a variable or null
- Throws:
ScriptException
-
setBitsetProperty
private void setBitsetProperty(BS bs, int tok, int iValue, float fValue, T tokenValue) throws ScriptException
- Throws:
ScriptException
-
setStatement
protected boolean setStatement(T[] st0, int pt0) throws ScriptException
provides support for @x and @{....} in statements. The compiler passes on these, because they must be integrated with the statement dynamically.- Parameters:
st0- aaToken[i]pt0-- Returns:
- a fixed token set -- with possible overrun of unused null tokens
- Throws:
ScriptException
-
-