Isis Developer Reference
Isis::InlineInfixToPostfix Class Reference

A parser for converting equation strings to postfix. More...

#include <InlineInfixToPostfix.h>

Inheritance diagram for Isis::InlineInfixToPostfix:
Inheritance graph
Collaboration diagram for Isis::InlineInfixToPostfix:
Collaboration graph

Public Member Functions

 InlineInfixToPostfix ()
 Constructs an InlineInfixToPostfix object.
 
virtual ~InlineInfixToPostfix ()
 Destroys the InlineInfixToPostfix object.
 
QString convert (const QString &infix)
 This method converts infix to postfix.
 
QString tokenizeEquation (const QString &equation)
 This method will add spaces between all operators and numbers, making it possible to get each element of the equation one by one.
 

Protected Member Functions

virtual bool isKnownSymbol (QString representation)
 This method attempts to verify that the given argument is recognized as a valid function, operator, scalar, or variable.
 
virtual InfixOperatorfindOperator (QString element)
 This method will first search the recognized list of operators and functions for the given token.
 

Protected Attributes

QList< InfixOperator * > p_operators
 

Detailed Description

A parser for converting equation strings to postfix.

This class converts infix equations to postfix for parsing.

Author
2012-07-15 Kris Becker

Constructor & Destructor Documentation

◆ InlineInfixToPostfix()

Isis::InlineInfixToPostfix::InlineInfixToPostfix ( )

Constructs an InlineInfixToPostfix object.

The operators list is filled with string representations of known symbols, recognized by both this class and the parent class.

◆ ~InlineInfixToPostfix()

Isis::InlineInfixToPostfix::~InlineInfixToPostfix ( )
virtual

Destroys the InlineInfixToPostfix object.

Member Function Documentation

◆ convert()

QString Isis::InfixToPostfix::convert ( const QString & infix)
inherited

This method converts infix to postfix.

It uses an enhanced verion of the algorithm found on page 159 of "Data Structures & Algorithms in Java" Second Edition by Robert Lafore. First, we prep the equation with TokenizeEquation and then parse through it using the known-good algorithm.

Parameters
infixThe infix equation
Returns
IString The postfix equation

References _FILEINFO_, Isis::InfixToPostfix::findOperator(), Isis::InfixToPostfix::isKnownSymbol(), Isis::toDouble(), Isis::IString::Token(), Isis::InfixToPostfix::tokenizeEquation(), Isis::IString::ToQt(), and Isis::IException::User.

Referenced by Isis::InlineCalculator::toPostfix().

◆ findOperator()

InfixOperator * Isis::InlineInfixToPostfix::findOperator ( QString token)
protectedvirtual

This method will first search the recognized list of operators and functions for the given token.

If found, it will return a pointer to the represented operator or function. If not found, the method checks whether the given token is a variable. If it is a variable, a new operator is constructed from the given token and a pointer to the represented variable is returned. If the given token is neither an operator, a function nor a variable, then an exception is thrown.

Parameters
tokenThe symbolic representation of the operator, function, or variable
Returns
InfixOperator* A pointer to the operator object that contains known information about the operator
Exceptions
IException::User"The token is not recognized as an operator, function or variable."

Reimplemented from Isis::InfixToPostfix.

References _FILEINFO_, findOperator(), Isis::InfixToPostfix::findOperator(), and Isis::IException::User.

Referenced by findOperator().

◆ isKnownSymbol()

bool Isis::InlineInfixToPostfix::isKnownSymbol ( QString representation)
protectedvirtual

This method attempts to verify that the given argument is recognized as a valid function, operator, scalar, or variable.

Parameters
representationThe symbolic representation of the operator
Returns
bool Indicates whether the representaion is recognized.

Reimplemented from Isis::InfixToPostfix.

References Isis::InfixToPostfix::isKnownSymbol().

◆ tokenizeEquation()

QString Isis::InfixToPostfix::tokenizeEquation ( const QString & equation)
inherited

This method will add spaces between all operators and numbers, making it possible to get each element of the equation one by one.

It will also parse out the function calls, adding parenthesis where needed so the user doesn't have to. The result is an equation ready for parsing (but NOT fully parenthesized, just enough to make sure our algorithm makes no mistakes).

Parameters
equationAn unformatted infix equation
Returns
IString A tokenized equation with additional parentheses

Referenced by Isis::InfixToPostfix::convert().

Member Data Documentation

◆ p_operators


The documentation for this class was generated from the following files: