Namespace JXG.PrefixParser
↳ JXG.PrefixParser
Defined in: prefix.js.
Constructor Attributes | Constructor Name and Description |
---|---|
Prefix expression parser, i.e.
|
Method Attributes | Method Name and Description |
---|---|
<static> |
JXG.PrefixParser.dimension(term)
Determine the dimension of the resulting value, i.e.
|
<private> <static> |
JXG.PrefixParser.getParents(term)
Determine parent elements of a prefix expression.
|
<static> |
JXG.PrefixParser.parse(term, action)
Parse a prefix expression and apply an action.
|
<static> |
JXG.PrefixParser.toPrefix(term)
Convert a prefix expression into a new prefix expression in which
JSXGraph elements have been replaced by their ids.
|
Namespace Detail
JXG.PrefixParser
Prefix expression parser, i.e. a poor man's parser.
This is a simple prefix parser for measurements and expressions of measurements,
see Measurement.
An expression is given as
- array starting with an operator as first element, followed by one or more operands,
- number.
Possible operators are:
- '+', '-', '*', '/': binary operators
- 'Area', 'Radius', 'Value', 'V', 'L': arbitrary methods of JSXGraph elements, supplied as strings.
- 'exec': call a function
Possible operands are:
- numbers
- strings
- JSXGraph elements in case the operator is a method. Example: ['Area', circle] calls the method circle.Area().
- prefix expressions (for binary operators)
- 'exec': call functions. Example: ['exec', 'sin', ['V', slider]] computes 'Math.sin(slider.Value())'. As functions only functions in Math or JXG.Math are allowed.
- Examples:
['+', 100, 200]
var p1 = board.create('point', [1, 1]); var p2 = board.create('point', [1, 3]); var seg = board.create('segment', [[-2,-3], [-2, 3]]); // Valid prefix expression: ['L', seg]
var p1 = board.create('point', [1, 1]); var p2 = board.create('point', [1, 3]); var seg = board.create('segment', [[-2,-3], [-2, 3]]); var ci = board.create('circle', [p1, 7]); // Valid prefix expression: ['+', ['Radius', ci], ['L', seg]]
var ang = board.create('angle', [[4, 0], [0, 0], [2, 2]]); // Valid prefix expression: ['V', ang, 'degrees']);
Method Detail
<static>
JXG.PrefixParser.dimension(term)
Determine the dimension of the resulting value, i.e. ['L', obj] as well as
['+', ['L', obj1], ['L', obj2]] have dimension 1.
['+', ['Area', obj1], ['L', obj2]] will retrun NaN, because the two operands have conflicting dimensions.
If an element is a measurement element, then it's dimension can be set as attribute. This overrules the computed dimension.
- Parameters:
- {Array|Number} term
- Prefix expression
- Returns:
- Number
<private> <static>
JXG.PrefixParser.getParents(term)
Determine parent elements of a prefix expression.
- Parameters:
- {Array|Number} term
- prefix expression
- Returns:
- Array
<static>
{Number}
JXG.PrefixParser.parse(term, action)
Parse a prefix expression and apply an action.
- Parameters:
- {array|number} term
- Expression
- {String} action
- Determines what to do. So far, the only action available is 'execute', which evaluates the expression.
- Returns:
- {Number} What ever the action does.
<static>
{Array|Number}
JXG.PrefixParser.toPrefix(term)
Convert a prefix expression into a new prefix expression in which
JSXGraph elements have been replaced by their ids.
- Parameters:
- {Array|Number} term
- Returns:
- {Array|Number}