之前发过一个贴子,但没得到答案,还是结贴了,只有这100分了,求满意答案,希望高手帮忙,例如我的主程序中有变量 A B
第一步:
界面上有个输入框,用户在输入框中输入 A=5 (或A=10-9 或 A=B-1)
这时候,我的程序就可以运行用户输入的这个表达式,使主程序中变量A=5(或其他结果)这是第一步,第二步的话,用户在输入的时候,可能还会带入if流程控制
例如用户输入: if(A>5) B=4
这时候主程序再执行这个语句
类似于这种带点流程控制的脚本有人介绍用irony ,yacc,lex之类的其实我就是上面这些需求,用这个实在大才小用,而且也复杂化了。
第一步:
界面上有个输入框,用户在输入框中输入 A=5 (或A=10-9 或 A=B-1)
这时候,我的程序就可以运行用户输入的这个表达式,使主程序中变量A=5(或其他结果)这是第一步,第二步的话,用户在输入的时候,可能还会带入if流程控制
例如用户输入: if(A>5) B=4
这时候主程序再执行这个语句
类似于这种带点流程控制的脚本有人介绍用irony ,yacc,lex之类的其实我就是上面这些需求,用这个实在大才小用,而且也复杂化了。
动态编译试过,他相当于是编译一个新的DLL,但是不能使用主程序中的变量。
我希望执行的这句就直接是在当前主程序中
string str=textBox1.text.tostring();
string[] str1=str.split('=');
string str2=str1[1].tostring();
string[] str3=new string[](100);
str3=str2.split('-');if(str3.length>0)
{
int a=int.parseInt(str3[0].tostring());
int b=int.parseInt(str3[1].tostring());
A=a-b;
}
else
{
str3=str2.split('+');
if(str3.length>0){
int a=int.parseInt(str3[0].tostring());
int b=int.parseInt(str3[1].tostring());
A=a+b;}........
}
yacc,lex这些可以用吗?
对这块我了解不多
建议你考虑看下F#部分,F#估计可以解决你的问题,我曾看过F#的语法,函数式语法,那么只要有那么一个方法可以把字符串形式的函数表达式传入,并提供返回值就算大功告成了。