现在设定一句表达式(表达式不是唯一的,不过都是由非与或表示):
  (ORA-||EXP-)&&(!(ORA-04068||EXP-00008))&&(Export terminated successfully with warnings)我想达到的目的是 把这表达式转换成delphi源代码下 if ((ORA-)OR(EXP-)) AND (NOT((ORA_04068 OR EXP-00008))) AND (Export terminated successfully with warnings) THEN
BEGIN
 //...
END;就是动态构造if结构,表达式 条件组成和之间的逻辑关系是变化的,不是唯一, 有可能(aaaa)or (vvvv) and (lll)等等的组合请问一下怎样把这样的非与或字符串转换 解析成if结构呢? 谢谢

解决方案 »

  1.   

    是的,要考虑括号的优先级,现在是 解释的时候不知道怎样做,无从入手, 谢谢 hys_427 的提点
      

  2.   

    原来的表达式是字符串吗?
    如果是的话:
    '|'替换成' or '
    '&&'替换成' and '
    '!'替换成' not '
    只要原来的表达式是逻辑正确的,替换后也没有问题。如果原来的表达式不是字符串,只是逻辑判断,那么用代码生成也很容易。
      

  3.   

    请问 DelphiGuy 我要处理的是一个字符串来的,就是非与或的形式字符串 我知道要转换成 not、and、or 现在问题是我处理转换后,怎么将一个字符串解释成 一段可执行的代码呢?而且还有后续的处理代码的  是的,hys_427 现在就是搞不懂怎样解析,谢谢你们提点了又。。 :) 
      

  4.   

    我的做法是边解析,边运算求得结果,例如
    求得最里面括号表达式的值为true,则用这个true再取和外面的表达式进行逻辑比较,一步步地最终得出最终的结果true 或false,
    然后在函数中ifthen(解析表达式结果,true_value,false_value);即可
      

  5.   

    你的意思是不但要翻译成Delphi的源码,还要能执行?
    那就需要某种运行时脚本执行功能。
    好在Delphi是太强大了,只有你想不到,只有你不知道,而没有做不到啊。
    看这个dws,免费、开源的(不是免费、开源的东西,连看都不想看):
    http://sourceforge.net/projects/dws