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 CmdExt
cmdExt
boolean
debugHigh
private IsoExt
isoExt
private MathExt
mathExt
private javajs.util.P3
ptTemp
private SmilesExt
smilesExt
protected 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 BS
atomExpression(T[] code, int pcStart, int pcStop, boolean allowRefresh, boolean allowUnderflow, java.lang.Object[] ret, boolean andNotDeleted)
BS
atomExpressionAt(int index)
private BS
bitSetForModelFileNumber(int m)
protected boolean
compareFloat(int tokOperator, float a, float b)
protected BS
compareFloatData(int tokWhat, float[] data, int tokOperator, float comparisonFloat)
private BS
compareInt(int tokWhat, int tokOperator, int ival)
private BS
compareString(int tokWhat, int tokOperator, java.lang.String comparisonString)
private boolean
compareStringValues(int tokOperator, java.lang.String propertyValue, java.lang.String comparisonValue)
protected java.util.Map<java.lang.String,java.lang.Object>
getAssocArray(int i)
protected BS
getAtomBits(int tokType, java.lang.Object specInfo)
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)
private SV
getBitsetPropertySelector(int i, int xTok)
CmdExt
getCmdExt()
private BS
getComparison(T t, int tokWhat, int tokOp, java.lang.String strOp, float[] data)
private java.lang.Object
getExt(java.lang.String type)
IsoExt
getIsoExt()
MathExt
getMathExt()
protected static int
getSeqCode(T instruction)
SmilesExt
getSmilesExt()
private java.lang.Object
getStringObjectAsVariable(java.lang.Object obj)
protected javajs.util.Lst<SV>
listBS(BS bs)
protected boolean
noCopy(int i, int dir)
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)
This is the primary driver of the RPN (reverse Polish notation) expression processor.protected boolean
parameterExpressionBoolean(int pt, int ptMax)
protected javajs.util.Lst<SV>
parameterExpressionList(int pt, int ptAtom, boolean isArrayItem)
protected boolean
parameterExpressionSelect(java.util.Map<java.lang.String,SV> h, T[] where)
protected java.lang.String
parameterExpressionString(int pt, int ptMax)
protected SV
parameterExpressionToken(int pt)
private void
setBitsetProperty(BS bs, int tok, int iValue, float fValue, T tokenValue)
protected boolean
setStatement(T[] st0, int pt0)
provides support for @x and @{....} in statements.protected SV
setVariable(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 ScriptException
This 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
-
-