2016-12-14 2 views
-1

В Microsoft TFS, есть конструктор запросов следующим образом: enter image description hereКак реализовать построитель выражений в C++/QT, который похож на построитель запросов Microsoft TFS?

И я просил, чтобы реализовать функцию так же, как TFS построитель запросов в C++/QT. Но я даже не знаю, как это сделать.

В принципе, с этой функцией пользователь сможет установить условие для выполнения определенного действия при запуске нашего приложения. например:

// the condition will be set by user before run this application 
// and I want provide a UI similar to TFS query to user 
if (var_a >= 0 && (var_b + var_c) < 10) 
{ 
    prompt the warning dialog 
} 

это условие (var_a >= 0 && (var_b + var_c) < 10) будет храниться в виде XML, как показано ниже:

<ConditionPair Operator="AND"> 
    <Condition Operator="GE"> 
     <LValue> 
      <Kind>Variable</Kind> 
      <Value>var_a</Value> 
     </LValue> 
     <RValue> 
      <Kind>Const</Kind> 
      <Value>0</Value> 
     </RValue> 
    </Condition> 
    <Condition Operator="LT"> 
     <LValue> 
      <Kind>Expression</Kind> 
      <Value> 
       <MathExp Operator="ADD"> 
        <LValue> 
         <Kind>Variable</Kind> 
         <Value>var_b</Value> 
        </LValue> 
        <RValue> 
         <Kind>Variable</Kind> 
         <Value>var_c</Value> 
        </RValue> 
       </MathExp> 
      </Value> 
     </LValue> 
     <RValue> 
      <Kind>Const</Kind> 
      <Value>10</Value> 
     </RValue> 
    </Condition> 
</ConditionPair> 

Я знаю, как реализовать интерфейс, но я не знаю, как интерпретировать выражение.

Есть ли открытая библиотека или блог об этой теме?

Любые мысли об этом ценятся.

+0

Вы пытаетесь создать SQL для этого, чтобы вы могли запросить базу данных в Qt? – drescherjm

+0

@drescherjm Нет, не имеет никакого отношения к SQL. – ricky

+0

Как организованы данные? Почему это не в базе данных? – Yakk

ответ

0

Я не знаю, понял ли я вас, но, возможно, вы могли бы использовать Qt Script для интерпретации (разбора) команд, а затем действовать.

Смежные вопросы