#+begin_src cfengine3 body common control { bundlesequence => { run }; } body agent control { inform => "true"; } bundle agent run { vars: "values[0]" string => "x"; # bad "values[1]" string => "+ 200"; # bad "values[2]" string => "200 + 100"; "values[3]" string => "200 - 100"; "values[4]" string => "- - -"; # bad "values[5]" string => "2 + 3 - 1"; "values[6]" string => ""; # 0 "values[7]" string => "3 / 0"; # inf but not an error "values[8]" string => "3^3"; # "values[9]" string => "-1^2.1"; # 'nan' or '-nan' (on some platforms) "values[10]" string => "sin(20)"; "values[11]" string => "cos(20)"; "values[19]" string => "20 % 3"; # remainder "values[20]" string => "sqrt(0.2)"; "values[21]" string => "ceil(3.5)"; "values[22]" string => "floor(3.4)"; "values[23]" string => "abs(-3.4)"; "values[24]" string => "-3.4 == -3.4"; "values[25]" string => "-3.400000 == -3.400001"; "values[26]" string => "e"; "values[27]" string => "pi"; "values[28]" string => "100m"; # 100 million "values[29]" string => "100k"; # 100 thousand "indices" slist => sort( getindices("values"), int); "eval[$(indices)]" string => eval("$(values[$(indices)])", "math", "infix"); reports: "math/infix eval('$(values[$(indices)])') = '$(eval[$(indices)])'"; } #+end_src ############################################################################### #+begin_src example_output #@ ``` #@ info: eval error: expression could not be parsed (input 'x') #@ info: eval error: expression could not be parsed (input '+ 200') #@ info: eval error: expression could not be parsed (input '- - -') #@ R: math/infix eval('x') = '' #@ R: math/infix eval('+ 200') = '' #@ R: math/infix eval('200 + 100') = '300.000000' #@ R: math/infix eval('200 - 100') = '100.000000' #@ R: math/infix eval('- - -') = '' #@ R: math/infix eval('2 + 3 - 1') = '4.000000' #@ R: math/infix eval('') = '0.000000' #@ R: math/infix eval('3 / 0') = 'inf' #@ R: math/infix eval('3^3') = '27.000000' #@ R: math/infix eval('sin(20)') = '0.912945' #@ R: math/infix eval('cos(20)') = '0.408082' #@ R: math/infix eval('20 % 3') = '2.000000' #@ R: math/infix eval('sqrt(0.2)') = '0.447214' #@ R: math/infix eval('ceil(3.5)') = '4.000000' #@ R: math/infix eval('floor(3.4)') = '3.000000' #@ R: math/infix eval('abs(-3.4)') = '3.400000' #@ R: math/infix eval('-3.4 == -3.4') = '1.000000' #@ R: math/infix eval('-3.400000 == -3.400001') = '0.000000' #@ R: math/infix eval('e') = '2.718282' #@ R: math/infix eval('pi') = '3.141593' #@ R: math/infix eval('100m') = '100000000.000000' #@ R: math/infix eval('100k') = '100000.000000' #@ info: eval error: expression could not be parsed (input 'x') #@ info: eval error: expression could not be parsed (input '+ 200') #@ info: eval error: expression could not be parsed (input '- - -') #@ info: eval error: expression could not be parsed (input 'x') #@ info: eval error: expression could not be parsed (input '+ 200') #@ info: eval error: expression could not be parsed (input '- - -') #@ ``` #+end_src