之前发过一个贴子,但没得到答案,还是结贴了,只有这100分了,求满意答案,希望高手帮忙,例如我的主程序中有变量 A B  
第一步:
界面上有个输入框,用户在输入框中输入 A=5 (或A=10-9 或 A=B-1)
这时候,我的程序就可以运行用户输入的这个表达式,使主程序中变量A=5(或其他结果)这是第一步,第二步的话,用户在输入的时候,可能还会带入if流程控制
例如用户输入: if(A>5) B=4
这时候主程序再执行这个语句
类似于这种带点流程控制的脚本有人介绍用irony ,yacc,lex之类的其实我就是上面这些需求,用这个实在大才小用,而且也复杂化了。

解决方案 »

  1.   

    lz的程序如果是Web的,只能寄希望与js或者jquery解决了如果程序是Winform的  .net中某个类的某个方法可以直接实现的(以前用过,年代久远,忘记了……)
      

  2.   

    动态编译http://zhidao.baidu.com/question/130350599.html
      

  3.   


    动态编译试过,他相当于是编译一个新的DLL,但是不能使用主程序中的变量。
    我希望执行的这句就直接是在当前主程序中
      

  4.   

    http://topic.csdn.net/u/20111109/19/07ff3387-bd64-418b-ac68-ab03e433ac2e.html
      

  5.   

    int A=0;
    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;}........
    }
      

  6.   

    这么大的量,还是用yacc,lex吧antlr也可以,这个才是终极解决方案啊
      

  7.   

    但语法简单,只有几种,只是变量多,framework有没这么个功能,就是给出一个string的语句,就直接可以执行的?而且是当作现有程序中的一部分,如果用yacc,lex,有没简单点的例子
      

  8.   

    还有,我的语法是定的,就是要用这种格式的
    yacc,lex这些可以用吗?
    对这块我了解不多
      

  9.   

    动态编译是可以使用主程序中的变量的,只要保住命名空间一样,类是public的,就可以无阻碍访问,不过效率就差了。
    建议你考虑看下F#部分,F#估计可以解决你的问题,我曾看过F#的语法,函数式语法,那么只要有那么一个方法可以把字符串形式的函数表达式传入,并提供返回值就算大功告成了。