Expression eval: Difference between revisions
Jump to navigation
Jump to search
imported>Bale Start page. This needs a lot of work. r8824 |
imported>Theraze No edit summary |
||
Line 19: | Line 19: | ||
code1={{CodeSample| | code1={{CodeSample| | ||
title=Code Sample| | title=Code Sample| | ||
description=This script expands | description=This script expands expression_eval() to include support for user-defined variables. It is extremely complex, but it is extremely useful to anyone who wants to use expression_eval().| | ||
code= | code= | ||
<syntaxhighlight> | <syntaxhighlight> | ||
Line 33: | Line 33: | ||
} | } | ||
m.append_tail(b); | m.append_tail(b); | ||
return | return expression_eval(b.to_string()); | ||
} | } | ||
Revision as of 14:39, 16 December 2010
Function Syntax
float expression_eval(string expression )
- expression is a mathematical expression to be solved.
Evaluates an expression... somehow.
Code Sample
This script expands expression_eval() to include support for user-defined variables. It is extremely complex, but it is extremely useful to anyone who wants to use expression_eval().
float eval(string expr, float[string] vars) {
buffer b;
matcher m = create_matcher( "\\b[a-z_][a-zA-Z0-9_]*\\b", expr );
while (m.find()) {
string var = m.group(0);
if (vars contains var) {
m.append_replacement(b, vars[var].to_string());
}
// could implement functions, pref access, etc. here
}
m.append_tail(b);
return expression_eval(b.to_string());
}
# Everything below this line shows how to make use of eval().
# TESTING:
float[string] v;
v["pi"] = 3.14159265;
v["ten"] = 10;
print(eval("2+3", v));
print(eval("max(pi^ten,ten^pi)", v));
print(eval("sqrt(pi)*L", v));
print(eval("undefined/2", v));