Math::SymbolicX::Calculator::Interface - Miscallaneous routines for interfaces
Do not use this in your scripts. Use one of the ::Interface::Foo classes.
::Interface::Foo
This is very much an internal class.
This module is a base class for interfaces to Math::SymbolicX::Calculator. It is not an interface by itself. It doesn't even define stubs for all methods of an interface and as such isn't an interface definition for Calculator::Interfaces. Instead, it contains various miscellaneous methods which may be of use to classes which actually implement interfaces.
These methods parse commands of a somewhat generic syntax.
When defining the form of the accepted input strings below, I'll be using certain variables:
$SYMBOL => An identifier matching /[A-Za-z][A-Za-z0-9_]*/ $FORMULA => String that can be parsed as a Math::Symbolic tree $PATTERN => String that can be parsed as a Math::Symbolic::Custom::Transformation. (*) $REPLACEMENT => String that can be parsed as the replacement part of a Math::Symbolic::Custom::Transformation (*). $TRANSFORMATION => String that can be parsed as a transformation in the calculator context. (*) This means it has the following form: $PATTERN -> $REPLACEMENT $GROUP => A group of transformations. Grouping is done in []-braces and the group elements are chained with one of &, |, or ",". Form: [ $x & $x & .... ] (Same for | or , but not mixed!) $x is either another $GROUP, a $TRANSFORMATION or a $SYMBOL in case of the latter, the symbol table of the calculator is accessed to map the $SYMBOL to a $TRANSFORMATION. The ultimate result of parsing such a thing is a Math::Symbolic::Custom::Transformation::Group object (**).
(*) $PATTERNs, $REPLACEMENTs and $TRANSFORMATIONs may contain some special syntax. Instead of the TREE_foo, VAR_foo, and CONST_foo special variables: You can write ?foo, $foo and !foo respectively.
$PATTERN
$REPLACEMENT
$TRANSFORMATION
TREE_foo
VAR_foo
CONST_foo
?foo
$foo
!foo
(**) Math::Symbolic::Custom::Transformation::Group objects are also Math::Symbolic::Custom::Transformations.
If errors occurr, these methods call the error() method with a description and then return the empty list.
error()
If these methods require access to certain attributes of the interface objects, this is mentioned in the docs.
Parses an expression of one of the forms
$SYMBOL = $FORMULA $SYMBOL = $TRANSFORMATION $SYMBOL = $GROUP
Returns an instance of Math::SymbolicX::Calculator::Command::Assignment which assigns either a formula or a transformation(-group) when executed.
Uses $self-calc()> and expects it to return the Calculator object. Uses the _parse_trafo_group method.
$self-
_parse_trafo_group
This method parses expressions of the form
$SYMBOL =~ $SYMBOL2 $SYMBOL =~ $TRANSFORMATION $SYMBOL =~ $GROUP
or
$SYMBOL =~~ $SYMBOL2 (*) ... and so on ...
(*) The =~ operator stands for recursive application of the transformation whereas the =~~ operator stands for shallow application.
=~
=~~
These expressions generally stand for the application of the transformation given on the right to the function $SYMBOL stands for. This method returns a Math::SymbolicX::Calculator::Command::Transformation object on success or calls the error() method and returns an empty list on failure.
$SYMBOL
Math::SymbolicX::Calculator::Command::Transformation
This methods expects $self-calc()> to return the Calculator object. It also uses the _parse_trafo_group method.
Parses a string of the form:
$SYMBOL $GROUP $TRANSFORMATION
In case of $SYMBOL, it accesses the Calculator symbol table to fetch the referenced Transformation. (And throws an error if it's not one.)
Returns a Math::Symbolic::Custom::Transformation object or calls the error() method and returns the empty list on failure.
This method uses Parse::RecDescent. Expects the calc() method to return the Calculator object. Uses the method _parse_simple_transformation.
calc()
_parse_simple_transformation
Parses a string of the form "pattern -> replacement", i.e. a simple $TRANSFORMATION.
Returns a Math::Symbolic::Custom::Transformation object or the empty list on failure.
Math::Symbolic::Custom::Transformation
Math::SymbolicX::Calculator, Math::SymbolicX::Calculator::Interface::Shell
Steffen Müller, <smueller@cpan.org>
Copyright (C) 2006, 2013 by Steffen Mueller
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6 or, at your option, any later version of Perl 5 you may have available.
To install Math::SymbolicX::Calculator, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Math::SymbolicX::Calculator
CPAN shell
perl -MCPAN -e shell install Math::SymbolicX::Calculator
For more information on module installation, please visit the detailed CPAN module installation guide.