日期:2014-05-18  浏览次数:20946 次

请教一个表达式解析的方法
有类似于这样的表达式
string expression="[a]>=100 | [b]='OK' & [f]=1 & [exp]<100";

有类
class test
{
public LogiOper; //存储逻辑运算符| &
public LeftExp; //存储运算符左边的表达式a,b,f,exp
public Operator; //存储运算符 >=, =,<,<=,>......
public RightExp; //存储运算符右边的表达式100,"OK",1,100
}

List<test> lst;
现在想将expression描述的表达式,存储到lst里.应该怎么写代码啊?

------解决方案--------------------
下载这个正则表达式再测试下看看是不是你要的结果喔:
http://deerchao.net/tools/regex_tester/index.htm

正则表达式为:
(?is)(\[(?<LeftExp>[^\[\]]*)\](?<Operator>[>=<]{1,2})(?<RightExp>[^[&|]*)(?<LogiOper>[&|]?))
------解决方案--------------------
探讨

的确,如老p说滴,正规计算机专业都会学的

1.词法分析
2.编译原理

这样把如果你不想去看最基础的东西。那么起码你先把这几个东西看看
1.BNF范式,EBNF范式
2.Antlr,yacc,Irony
3.表达式树