Вот нечего было делать, наваял вам небольшой парсер, работает только с условием AND нет проверок на пробелы, вообще м как, примерно показал.

Код AS3:
var fLib:Object = new Object();
fLib['=='] = ravno;
fLib['!='] = neravno;
fLib['>'] = bolshe;
fLib['<'] = menshe;
function bolshe(arg:Array):Boolean {
return arg[0]>arg[1];
}
function menshe(arg:Array):Boolean {
return arg[0]<arg[1];
}
function ravno(arg:Array):Boolean {
return arg[0]==arg[1];
}
function neravno(arg:Array):Boolean {
return arg[0]!=arg[1];
}
var variables:Object = new Object();
variables['p1'] = 1;
variables['p2'] = 2;
variables['p3'] = 2;
var commandLine = '(p1!=p2) AND (p2==p3) AND (p1<2)';
var resultCommand:Boolean = interpretator(commandLine);
trace(resultCommand); // true
function interpretator(line:String):Boolean {
var funcTemp:Array = new Array();
var funcDump:Array;
// разбиваем на логические И
var ifDump:Array = line.split('AND');
var resultDump:Array = new Array();
var result:Array = new Array();
// проходим по логическим составным
for each( var subcommand:String in ifDump) {
// ищем функции
for ( var func:String in fLib) {
// разбиваем на элементы
funcDump = subcommand.split(func);
// если два и более элемента значит нужно выполнить эту логическую функцию
if (funcDump.length>1) {
if (!resultDump[func]) resultDump[func] = new Array();
// парсим переменные
variableParser(funcDump);
// результаты в массив
resultDump[func].push(funcDump);
}
}
}
// выполняем функции
for ( func in resultDump) {
// пока есть элементы
while (resultDump[func].length) {
// выбираем по парам и выполняем соответсвующию функцию
result.push(fLib[func]( resultDump[func].shift() ) );
}
}
// только для условия И ( нужно доработать )
var resultBoolean:Boolean = true;
for each( var resB:Boolean in result ) {
if (resultBoolean) resultBoolean = resB;
}
return resultBoolean;
}
function variableParser(arr:Array):void {
// проходим все пары элементов
for ( var i:uint = 0; i <arr.length ; i++) {
var varIndex:String;
var ind:Number;
if (i%2) {
// если элемент после знака оператора то ищем дугу
ind = String(arr[i]).indexOf(')');
// режем текст до дуги
varIndex = String(arr[i]).substr(0,ind);
} else {
// если элемент перед оператором
ind = String(arr[i]).lastIndexOf('(');
// режем текст с начала строки до дуги
varIndex = String(arr[i]).substr(ind+1,String(arr[i]).length);
}
// находим переменную и переопределяем массив
arr[i] = (variables[varIndex]) ? variables[varIndex] : varIndex;
}
}