如何将这些表达式转换为反向波兰表示法?
How to turn these expressions into Reverse Polish Notation?
我正在使用 Odoo 8,我想设置几个域。我以为我理解反向波兰表示法,但域不起作用,所以我想我错了。
我想使用反向波兰表示法实现的域是:
A and B and C and (D or (E and F)):我试图用表达式 A B C 或 D E F,但没有成功。
A and B and (C or D or (E and F)):我试图用表达式 A B or or C D E F,但两者都不起作用。
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.
编辑
我在这里回答了一个问题:
我在其中详细解释了一种解析复杂域的好方法。我希望它对某人有所帮助。
我正在使用 Odoo 8,我想设置几个域。我以为我理解反向波兰表示法,但域不起作用,所以我想我错了。
我想使用反向波兰表示法实现的域是:
A and B and C and (D or (E and F)):我试图用表达式 A B C 或 D E F,但没有成功。
A and B and (C or D or (E and F)):我试图用表达式 A B or or C D E F,但两者都不起作用。
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.
编辑
我在这里回答了一个问题:
我在其中详细解释了一种解析复杂域的好方法。我希望它对某人有所帮助。