如何将这些表达式转换为反向波兰表示法?

How to turn these expressions into Reverse Polish Notation?

我正在使用 Odoo 8,我想设置几个域。我以为我理解反向波兰表示法,但域不起作用,所以我想我错了。

我想使用反向波兰表示法实现的域是:

Note: I am not writing ANDs in domains (if you do not specify anything in Odoo, it is supposed to use &).

我的域名是错误的,因为我总是没有记录。

有人能帮帮我吗?

我有答案。尽管您没有指定任何内容,但 Odoo 默认采用 AND,当存在必须在其他表达式之前执行的表达式时,您必须编写 AND,而 Odoo 不知道哪些是因为您有一个复杂而长的表达式。

在我的例子中,E 和 F 必须在任何其他表达式之前执行,因此我们不能在没有 AND 的情况下保留它们,所以:

  • A and B and C and (D or (E and F)):解为A B C or D and E F
  • A and B and (C or D or (E and F)):解为A B or or C D and E F .

在 Odoo 的 XML 域中,这些域将是:

  • [A, B, C, '|', D, '&', E, F].
  • [A, B, '|', '|', C, D, '&', E, F].

其中每个字母都是一个表达式,如 ('field'、'operator'、'value')

Note: ampersands must be escaped.

编辑

我在这里回答了一个问题:

我在其中详细解释了一种解析复杂域的好方法。我希望它对某人有所帮助。