C ++ Boost :: Spirit разбирает сложные логические выражения и создает эквивалентное дерево - PullRequest
0 голосов
/ 27 января 2020

Наши входные выражения похожи на это (даже более сложное):

((? Var1 <= (? Var2 + 125) &&? Var1> (? Var2 + 10)) ||! (? var1 ==? var3))

Примечание: переменные всегда начинаются с '?' или '_'

Наш желаемый результат:

                            ||
                          /   \
                        /      \  
                      /          \
                    /              \ 
                   /                 \ 
                 &&                   ! 
                /  \                  |
              /     \                 | 
            /        \                ==
          /            \             /  \
        /                \      ?var1    ?var3
      <=                   >
     / \                  / \
    /   \                /   \
   /     \              /     \
?var1      +        ?var1      +
          / \                 / \
         /   \               /   \
        /     \             /     \
      ?var2   125         ?var2   10

Ваша помощь действительно ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...