C# Class Catrobat.IDE.Core.Formulas.FormulaInterpreter

This class is implemented manually to improve parsing errors.

All functions have running time O(n).

This class internally uses yield return to report early errors first.

Parsing error and token tracking is implemented with local members to improve readability (see ParsingError and _origin).

Show file Open project: Catrobat/CatrobatForWindows Class Usage Examples

Private Properties

Property Type Description
Complete2 Catrobat.IDE.Core.CatrobatObjects.Range
CompleteBracket IFormulaToken
CompleteBrackets IEnumerable
CompleteChildren void
CompleteFunction IFormulaToken
CompleteFunctionsBackwards IEnumerable
CompleteFunctionsForward IEnumerable
CompleteNumber IEnumerable
CompleteNumbers IEnumerable
CompleteOperator IEnumerable
CompleteOperatorBackwards IEnumerable
CompleteOperatorForward IEnumerable
GetOrigin Catrobat.IDE.Core.CatrobatObjects.Range
GetOrigin Catrobat.IDE.Core.CatrobatObjects.Range
GetOrigin Catrobat.IDE.Core.CatrobatObjects.Range
GetOrigin Catrobat.IDE.Core.CatrobatObjects.Range
Interpret2 Catrobat.IDE.Core.Models.Formulas.Tree.FormulaTree
InterpretBrackets IEnumerable
InterpretChildren void
InterpretFunctions IEnumerable
InterpretMinusToken IFormulaOperator
InterpretMinusTokenBackwards IEnumerable
InterpretMinusTokenForward IEnumerable
InterpretNonParameter IEnumerable
InterpretNumbers IEnumerable
InterpretOperators IEnumerable
InterpretParameters IEnumerable
RemoveParentheses Catrobat.IDE.Core.Models.Formulas.Tree.FormulaTree
SetOrigin IEnumerable
SetOrigin void
SetOrigin void
SetOrigin void
SetParsingError void
SetParsingError void
SetParsingError2 void

Public Methods

Method Description
Complete ( IList tokens, int index ) : Range
Interpret ( IList tokens, ParsingError &parsingError ) : FormulaTree

Private Methods

Method Description
Complete2 ( IList tokens, int index ) : Range See http://stackoverflow.com/questions/160118/static-and-instance-methods-with-the-same-name.
CompleteBracket ( IList tokens, int index ) : IFormulaToken
CompleteBrackets ( IEnumerable tokens, bool forward = true ) : IEnumerable Compare InterpretBrackets.
CompleteChildren ( IFormulaToken commonToken, List parenthesesTokens ) : void
CompleteFunction ( IEnumerable tokens, int index ) : IFormulaToken
CompleteFunctionsBackwards ( IEnumerable tokens ) : IEnumerable
CompleteFunctionsForward ( IEnumerable tokens ) : IEnumerable Compare InterpretFunctions.
CompleteNumber ( IList tokens, int index ) : IEnumerable
CompleteNumbers ( IEnumerable tokens ) : IEnumerable Compare InterpretNumbers.
CompleteOperator ( IList tokens, int index ) : IEnumerable
CompleteOperatorBackwards ( IEnumerable tokens, IFormulaOperator operatorToken ) : IEnumerable
CompleteOperatorForward ( IEnumerable tokens, IFormulaOperator operatorToken ) : IEnumerable
GetOrigin ( ICollection tokens ) : Range
GetOrigin ( IEnumerable tokens ) : Range
GetOrigin ( IFormulaToken token ) : Range
GetOrigin ( IFormulaToken from, IFormulaToken to ) : Range
Interpret2 ( IList tokens ) : FormulaTree See http://stackoverflow.com/questions/160118/static-and-instance-methods-with-the-same-name.
InterpretBrackets ( IEnumerable tokens ) : IEnumerable

Maps all opening and closing parentheses and packs them with their interpreted children into FormulaTokenParameter.

InterpretChildren ( IFormulaToken commonToken, List parenthesesTokens ) : void
InterpretFunctions ( IEnumerable tokens ) : IEnumerable

Attaches the children of FormulaNodeUnaryFunction and FormulaNodeBinaryFunction.

InterpretMinusToken ( IFormulaToken previousToken, FormulaNodeSubtract minusToken ) : IFormulaOperator
InterpretMinusTokenBackwards ( IEnumerable tokens ) : IEnumerable

Resolves the ambiguity between FormulaNodeSubtract and FormulaNodeNegativeSign.

InterpretMinusTokenForward ( IEnumerable tokens ) : IEnumerable

Resolves the ambiguity between FormulaNodeSubtract and FormulaNodeNegativeSign.

InterpretNonParameter ( IEnumerable tokens ) : IEnumerable

Ensures there are no occurences of FormulaTokenParameterSeparator.

InterpretNumbers ( IEnumerable tokens, IEnumerable lookAhead ) : IEnumerable

Merges IFormulaNumber to FormulaTreeFactory.CreateNumberNode.

InterpretOperators ( IEnumerable tokens, IEnumerable lookAhead ) : IEnumerable

Attaches the children of FormulaNodePrefixOperator and FormulaNodeInfixOperator.

InterpretParameters ( IEnumerable tokens ) : IEnumerable

Ensures all parameters are separated by exactly one FormulaTokenParameterSeparator and suppresses all occurences of FormulaTokenParameterSeparator.

RemoveParentheses ( FormulaTree node ) : FormulaTree
SetOrigin ( IList tokens ) : IEnumerable
SetOrigin ( IFormulaToken token, ICollection tokens ) : void
SetOrigin ( IFormulaToken token, IFormulaToken otherToken ) : void
SetOrigin ( IFormulaToken token, Range value ) : void
SetParsingError ( IFormulaToken source, string message ) : void
SetParsingError ( Range source, string message ) : void
SetParsingError2 ( Range source, string message ) : void

Method Details

Complete() public static method

public static Complete ( IList tokens, int index ) : Range
tokens IList
index int
return Catrobat.IDE.Core.CatrobatObjects.Range

Interpret() public static method

public static Interpret ( IList tokens, ParsingError &parsingError ) : FormulaTree
tokens IList
parsingError ParsingError
return Catrobat.IDE.Core.Models.Formulas.Tree.FormulaTree