{"id":24467,"date":"2024-02-15T14:53:34","date_gmt":"2024-02-15T22:53:34","guid":{"rendered":"https:\/\/docs.extraview.com\/v25\/book\/arithmeticboolean-expressions-1\/"},"modified":"2025-02-24T09:16:22","modified_gmt":"2025-02-24T17:16:22","slug":"arithmeticboolean-expressions-1","status":"publish","type":"page","link":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/","title":{"rendered":"Arithmetic\/Boolean Expressions"},"content":{"rendered":"<p>In the original Perl version of the integration (Version 1.0), the Perl \u201ceval\u201d function was used to evaluate a generalized expression used in the xx_POLL_TRIGGER property. Since Perl is no longer used or required, a substitute expression evaluation method is provided. We describe the expression evaluation syntax and semantics here.<\/p>\n<p>An expression consists of one or more terms separated by infix operators:<\/p>\n<pre>\r\n<code>&lt;expression&gt; = <\/code><term><code>[<\/code><infix op=\"\"><term><code>]*\r\n<\/code><\/term><\/infix><\/term><\/pre>\n<p>A term is a literal or a a replaceable variable or a term preceded by a prefix operator or a parenthesized expression. A term may also be an expression surrounded by parentheses:<\/p>\n<pre>\r\n<code>&lt;term&gt; = &lt;literal&gt; | &lt;replaceable variable&gt;  | ( &lt;expression&gt; ) | &lt;prefix op&gt;*&lt;term&gt;<\/code>\r\n<\/pre>\n<p>A literal is a string literal or a number literal:<\/p>\n<pre>\r\n<code>&lt;literal&gt; = \u201c&lt;inside quote string&gt;\u201d | &lt;inside quote string&gt; | &lt;floating point number&gt;<\/code>\r\n<\/pre>\n<p>where <span class=\"fixedWidthFont\">&lt;inside quote string&gt;<\/span> follows the usual rules for quoted strings. Infix operators include both Boolean and arithmetic operators:<\/p>\n<pre>\r\n<code>&lt;infix op&gt; = + | - | \u201c*\u201d | \/ | \u201c&amp;&amp;\u201d |  \u201c||\u201d | . | eq | ne | gt | ge | lt | le | \u201c==\u201d<\/code>\r\n<\/pre>\n<p>Only one prefix operator, the boolean NOT, is currently supported:<\/p>\n<pre>\r\n<code>&lt;prefix op&gt; = !<\/code>\r\n<\/pre>\n<h3>\n\tRules of Evaluation<\/h3>\n<p>Evaluation proceeds left to right, in order of infix precedence, with parenthesized expressions evaluated before the containing term is evaluated. When mixing arithmetic and Boolean values, Boolean expressions are converted to 1.0 for true and 0.0 for false. Any non-zero arithmetic value is equivalent to true in a Boolean expression. All arithmetic computation uses floating point. The infix precedence is assigned to make the higher-valued operations more tightly binding. The values are as follows:<\/p>\n<ul>\n<li>\n\t\t7 \u2013 for the prefix \u201cnot\u201d operator (!)<\/li>\n<li>\n\t\t6 \u2013 for multiplication and division (* and \/)<\/li>\n<li>\n\t\t5 \u2013 for the string concatenation operation (.)<\/li>\n<li>\n\t\t3 \u2013 for plus, minus and the relational operators (+, -, eq, ne, gt, ge, lt, le, ==)<\/li>\n<li>\n\t\t1 \u2013 for the Boolean operators (||, &amp;&amp;)<\/li>\n<\/ul>\n<p>Hence, an expression like:<\/p>\n<pre>\r\n<code>a + b ge (c+e)*2 || !d == e<\/code>\r\n<\/pre>\n<p>would be evaluated in the following order:<\/p>\n<pre>\r\n\t<code>!d\r\n\t(c+e)\r\n\t*2\r\n\ta + b\r\n\tge\r\n\t== e\r\n\t||<\/code>\r\n<\/pre>\n<h3>\n\tExpression Examples<\/h3>\n<p><code>(__priority__ le 1) || ( __status__ eq \u201cfixed\u201d) 5\/9 * ( __temperature__ - 32) gt 0<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the original Perl version of the integration (Version 1.0), the Perl \u201ceval\u201d function was used to evaluate a generalized expression used in the xx_POLL_TRIGGER property. Since Perl is no longer used or required, a substitute expression evaluation method is provided. We describe the expression evaluation syntax and semantics here. An expression consists of one&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":24465,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_lmt_disableupdate":"no","_lmt_disable":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-24467","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Arithmetic\/Boolean Expressions - Product Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arithmetic\/Boolean Expressions - Product Documentation\" \/>\n<meta property=\"og:description\" content=\"In the original Perl version of the integration (Version 1.0), the Perl \u201ceval\u201d function was used to evaluate a generalized expression used in the xx_POLL_TRIGGER property. Since Perl is no longer used or required, a substitute expression evaluation method is provided. We describe the expression evaluation syntax and semantics here. An expression consists of one...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Product Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-24T17:16:22+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/\",\"url\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/\",\"name\":\"Arithmetic\/Boolean Expressions - Product Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#website\"},\"datePublished\":\"2024-02-15T22:53:34+00:00\",\"dateModified\":\"2025-02-24T17:16:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/docs.extraview.com\/v25\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ExtraView 25\",\"item\":\"https:\/\/docs.extraview.com\/v25\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Integration Guides\",\"item\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Perforce Integration Guide\",\"item\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Appendices\",\"item\":\"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"Arithmetic\/Boolean Expressions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#website\",\"url\":\"https:\/\/docs.extraview.com\/v25\/\",\"name\":\"ExtraView Product Documentation\",\"description\":\"ExtraView Documentation\",\"publisher\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/docs.extraview.com\/v25\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#organization\",\"name\":\"ExtraView Corporation\",\"url\":\"https:\/\/docs.extraview.com\/v25\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png\",\"contentUrl\":\"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png\",\"width\":512,\"height\":512,\"caption\":\"ExtraView Corporation\"},\"image\":{\"@id\":\"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arithmetic\/Boolean Expressions - Product Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/","og_locale":"en_US","og_type":"article","og_title":"Arithmetic\/Boolean Expressions - Product Documentation","og_description":"In the original Perl version of the integration (Version 1.0), the Perl \u201ceval\u201d function was used to evaluate a generalized expression used in the xx_POLL_TRIGGER property. Since Perl is no longer used or required, a substitute expression evaluation method is provided. We describe the expression evaluation syntax and semantics here. An expression consists of one...","og_url":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/","og_site_name":"Product Documentation","article_modified_time":"2025-02-24T17:16:22+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/","url":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/","name":"Arithmetic\/Boolean Expressions - Product Documentation","isPartOf":{"@id":"https:\/\/docs.extraview.com\/v25\/#website"},"datePublished":"2024-02-15T22:53:34+00:00","dateModified":"2025-02-24T17:16:22+00:00","breadcrumb":{"@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/arithmeticboolean-expressions-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/docs.extraview.com\/v25\/"},{"@type":"ListItem","position":2,"name":"ExtraView 25","item":"https:\/\/docs.extraview.com\/v25\/"},{"@type":"ListItem","position":3,"name":"Integration Guides","item":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/"},{"@type":"ListItem","position":4,"name":"Perforce Integration Guide","item":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/"},{"@type":"ListItem","position":5,"name":"Appendices","item":"https:\/\/docs.extraview.com\/v25\/extraview-25\/integration-guides-1\/perforce-integration-guide-1\/appendices-7\/"},{"@type":"ListItem","position":6,"name":"Arithmetic\/Boolean Expressions"}]},{"@type":"WebSite","@id":"https:\/\/docs.extraview.com\/v25\/#website","url":"https:\/\/docs.extraview.com\/v25\/","name":"ExtraView Product Documentation","description":"ExtraView Documentation","publisher":{"@id":"https:\/\/docs.extraview.com\/v25\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/docs.extraview.com\/v25\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/docs.extraview.com\/v25\/#organization","name":"ExtraView Corporation","url":"https:\/\/docs.extraview.com\/v25\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/","url":"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png","contentUrl":"https:\/\/docs-stg.extraview.com\/wp-content\/uploads\/2024\/03\/favicon.png","width":512,"height":512,"caption":"ExtraView Corporation"},"image":{"@id":"https:\/\/docs.extraview.com\/v25\/#\/schema\/logo\/image\/"}}]}},"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"carl.koppel","author_link":"https:\/\/docs.extraview.com\/v25\/author\/carl-koppel\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/comments?post=24467"}],"version-history":[{"count":0,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24467\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/pages\/24465"}],"wp:attachment":[{"href":"https:\/\/docs.extraview.com\/v25\/wp-json\/wp\/v2\/media?parent=24467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}