[
https://issues.apache.org/jira/browse/MATH-192?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12569688#action_12569688
]
Axel Kramer commented on MATH-192:
----------------------------------
> how extensible is this parser ?
> Could it be "warm extensible", that is, extensible after compilation, by
> programme-calls?
>
> E.g. could I redefine after class-loading, that \ is the (binary) set
> difference or the (unary) macro-call ?
With the ASTNodeFactory#getIdentifier2OperatorMap() and
ASTNodeFactory#addOperator() methods, you can achieve this dynamic operator
"over-loading".
The operator characters set must also be defined properly in the
IParserFactory#DEFAULT_OPERATOR_CHARACTERS string (Unfortunately the backslash
\ is not included in the operators character set at the moment).
For the evaluation of this new operator you have to add new functions for
example in the DoubleEvaluator#FUNCTION_DOUBLE_MAP or
ComplexEvaluator#FUNCTION_MAP maps.
This isn't very comfortable to use at the moment. But I think in the first step
we have to define a syntax for a math expression parser which should be the
foundation for usage inside commons math?
> paul
>
> PS: do I understand correctly that your submission is expected as a donation
> that'd be under APL?
Yes.
But I don't know exactly which formalisms must be used to donate it under APL
into the commons project?
And I also think that the current package is only a starting-point for
discussion the design of a math parser.
axel
> Operator precedence driven parser
> ----------------------------------
>
> Key: MATH-192
> URL: https://issues.apache.org/jira/browse/MATH-192
> Project: Commons Math
> Issue Type: New Feature
> Environment: Tested with commons-math-1.2-RC1-src
> Reporter: Axel Kramer
> Priority: Minor
> Attachments: parser.zip
>
>
> Attached are sources for an operator precedence driven parser as described
> here:
> http://en.wikipedia.org/wiki/Operator-precedence_parser
> At the moment the used syntax for the math expressions is very similar to the
> Mathematica input syntax
> and must probably be reworked for the common maths needs.
> Mainly the parser is driven by the arrays HEADER_STRINGS, OPERATOR_STRINGS
> and OPERATORS in the:
> org.matheclipse.parser.operator.ASTNodeFactory
> class.
> There's a utility class
> org.matheclipse.parser.util.GenerateOperatorArrays
> which generates the above arrays for operator sets defined in a textfile like
> for example
> /org.matheclipse.parser/eval/src/operators.txt
> JUnit test classes for testing the pure parser without any evaluations:
> /org.matheclipse.parser.test/src/org/matheclipse/parser/test/AllParserTests.java
> JUnit test classes for testing the evaluation in double or Complex
> calculation mode:
> /org.matheclipse.parser.test/src/org/matheclipse/parser/test/eval/AllEvalTests.java
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.