[papgets] add exponentiation operator to papgets

This commit is contained in:
Gautier Hattenberger
2014-07-24 14:39:00 +02:00
parent 975f677b53
commit d9285c45b8
4 changed files with 13 additions and 3 deletions
+7
View File
@@ -54,6 +54,13 @@
<property name="color" value="white"/>
</papget>
<papget type="expression" display="text" x="600" y="422">
<property name="expr" value="NAVIGATION.dist2_home ** 0.5"/>
<property name="size" value="15."/>
<property name="format" value="HOME dist: %.1fm"/>
<property name="color" value="white"/>
</papget>
<papget type="variable_setting" display="button" x="10" y="250">
<property name="variable" value="launch"/>
<property name="value" value="1."/>
+1
View File
@@ -50,6 +50,7 @@ rule token = parse
| "+" { PLUS }
| "=" { ASSIGN }
| "-" { MINUS }
| "**" { EXPO }
| "*" { MULT }
| "/" { DIV }
| "!" { NOT }
+3 -2
View File
@@ -30,12 +30,12 @@ open Expr_syntax
%token DOT COMMA SEMICOLON LP RP LC RC LB RB DEREF AND COLON OR
%token EQ GT ASSIGN GEQ NOT
%token PLUS MINUS
%token MULT DIV MOD
%token MULT DIV MOD EXPO
%left AND OR /* lowest precedence */
%left EQ GT ASSIGN GEQ
%left PLUS MINUS
%left MULT DIV MOD
%left MULT DIV MOD EXPO
%nonassoc NOT
%nonassoc UMINUS
%left DEREF /* highest precedence */
@@ -56,6 +56,7 @@ expression:
| expression MULT expression { CallOperator ("*",[$1;$3]) }
| expression DIV expression { CallOperator ("/",[$1;$3]) }
| expression MOD expression { CallOperator ("%",[$1;$3]) }
| expression EXPO expression { CallOperator ("**",[$1;$3]) }
| MINUS expression %prec UMINUS { CallOperator ("-",[$2]) }
| NOT expression { CallOperator ("!",[$2]) }
| INT { Int $1 }
+2 -1
View File
@@ -102,10 +102,11 @@ let hash_vars = fun expr ->
let wrap = fun f ->
fun x y -> string_of_float (f (float_of_string x) (float_of_string y))
let eval_bin_op = function
"*" -> wrap ( *. )
| "*" -> wrap ( *. )
| "+" -> wrap ( +. )
| "-" -> wrap ( -. )
| "/" -> wrap ( /. )
| "**" -> wrap ( ** )
| op -> failwith (sprintf "Papget.eval_expr '%s'" op)
let eval_expr = fun (extra_functions:(string * (string list -> string)) list) h e ->