PINE LIBRARY
Updated StringEvaluation

Library "StringEvaluation"
Methods to handle evaluation of strings.
is_comma(char) Check if char is a comma ".".
Parameters:
Returns: bool.
is_op(char) Check if char is a operator.
Parameters:
Returns: bool.
number(char) convert a single char string into valid number.
Parameters:
Returns: float.
operator(op, left, right) operation between left and right values.
Parameters:
operator_precedence(op) level of precedence of operator.
Parameters:
Returns: int.
cleanup(_str) Evaluate a string to clean up and retrieve only used chars
Parameters:
Returns: string array, evaluated array.
generate_rpn(tokens) uses Shunting-Yard algorithm to generate a RPN (Reverse Polish notation)
array of strings from a array of strings containing arithmetic notation.
ex:.. '[3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3]' --> '[3 4 2 * 1 5 - 2 3 ^ ^ / +]'
Parameters:
Returns:
parse_rpn() evaluate a RPN (Reverse Polish notation) array of strings.
ex:.. 3 4 2 * 1 5 - 2 3 ^ ^ / +
| param tokens string array, RPN ordered tokens, ex(['3', '4', '2', '1', '5', '2', '3', '*', '-', '^', '^', '/', '+']).
| Returns float, solution.
eval() evaluate a string with references to a array of arguments.
| param tokens string, arithmetic operations with references to indices in arguments, ex:"0+1*0+2*2+3" arguments[1, 2, 3]
| param arguments float array, arguments.
| Returns float, solution.
Methods to handle evaluation of strings.
is_comma(char) Check if char is a comma ".".
Parameters:
- char: string, 1 character string.
Returns: bool.
is_op(char) Check if char is a operator.
Parameters:
- char: string, 1 character string.
Returns: bool.
number(char) convert a single char string into valid number.
Parameters:
- char: string, 1 character string.
Returns: float.
operator(op, left, right) operation between left and right values.
Parameters:
- op: string, operator string character.
- left: float, left value of operation.
- right: float, right value of operation.
operator_precedence(op) level of precedence of operator.
Parameters:
- op: string, operator 1 char string.
Returns: int.
cleanup(_str) Evaluate a string to clean up and retrieve only used chars
Parameters:
- _str: string, arithmetic operations in a string.
Returns: string array, evaluated array.
generate_rpn(tokens) uses Shunting-Yard algorithm to generate a RPN (Reverse Polish notation)
array of strings from a array of strings containing arithmetic notation.
ex:.. '[3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3]' --> '[3 4 2 * 1 5 - 2 3 ^ ^ / +]'
Parameters:
- tokens: string array, array with arithmetic notation.
Returns:
parse_rpn() evaluate a RPN (Reverse Polish notation) array of strings.
ex:.. 3 4 2 * 1 5 - 2 3 ^ ^ / +
| param tokens string array, RPN ordered tokens, ex(['3', '4', '2', '1', '5', '2', '3', '*', '-', '^', '^', '/', '+']).
| Returns float, solution.
eval() evaluate a string with references to a array of arguments.
| param tokens string, arithmetic operations with references to indices in arguments, ex:"0+1*0+2*2+3" arguments[1, 2, 3]
| param arguments float array, arguments.
| Returns float, solution.
Release Notes
v2Update: supports boolean operators and float numbers now
Added:
is_op_component(char) Check if char is a operator component.
Parameters:
char: string, 1 character string.
Returns: bool.
is_boolean_op(char) Check if char is a boolean operator.
Parameters:
char: string, 1 character string.
Returns: bool.
is_alpha(char) Check if char is alphabet.
Parameters:
char: string, 1 character string.
Returns: bool.
boolean_operator(op, left, right) boolean operation between left and right values.
Parameters:
op: string, operator string character.
left: float, left value of operation.
right: float, right value of operation.
boolean_operator_precedence(op) level of precedence of operator.
Parameters:
op: string, operator 1 char string.
Returns: int.
aggregate_words(tokens) Aggregates words, numbers and operators into one.
Parameters:
tokens: string array, array with split string into character tokens.
Returns: string array.
Release Notes
v3 minor modification to see if it fixes a bug..Release Notes
v4 small test to see if i capture the source of a bug..Pine library
In true TradingView spirit, the author has published this Pine code as an open-source library so that other Pine programmers from our community can reuse it. Cheers to the author! You may use this library privately or in other open-source publications, but reuse of this code in publications is governed by House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.
Pine library
In true TradingView spirit, the author has published this Pine code as an open-source library so that other Pine programmers from our community can reuse it. Cheers to the author! You may use this library privately or in other open-source publications, but reuse of this code in publications is governed by House Rules.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.