Steffen Müller >
Math-SymbolicX-Calculator >
Math::SymbolicX::Calculator::Interface

Module Version: 0.02
Math::SymbolicX::Calculator::Interface - Miscallaneous routines for interfaces

Do not use this in your scripts.
Use one of the `::Interface::Foo`

classes.

*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 (**).

(*) `$PATTERN`

s, `$REPLACEMENT`

s and `$TRANSFORMATION`

s 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.

(**) 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.

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.

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.

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`

.

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::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.

syntax highlighting: