Completing Faustine by adding following primitives : float, power, &, |, xor, >=...
authorWANG <wang@wang-OptiPlex-780.(none)>
Mon, 9 Sep 2013 12:24:47 +0000 (14:24 +0200)
committerWANG <wang@wang-OptiPlex-780.(none)>
Mon, 9 Sep 2013 12:24:47 +0000 (14:24 +0200)
interpretor/lexer.mll
interpretor/types.ml

index 3cb9847..4f2f525 100644 (file)
@@ -10,30 +10,52 @@ rule token = parse
 | "-"                                   { IDENT Sub}
 | "*"                                   { IDENT Mul}
 | "/"                                   { IDENT Div}
 | "-"                                   { IDENT Sub}
 | "*"                                   { IDENT Mul}
 | "/"                                   { IDENT Div}
+| "^"                                  { IDENT Power}
 | "_"                                   { IDENT Pass}
 | "!"                                   { IDENT Stop}
 | "_"                                   { IDENT Pass}
 | "!"                                   { IDENT Stop}
+| "&"                                  { IDENT And}
+| "|"                                  { IDENT Or}
+| "xor"                                        { IDENT Xor}
 | "mem"                                 { IDENT Mem}
 | "@"                                   { IDENT Delay}
 | "floor"                               { IDENT Floor}
 | "mem"                                 { IDENT Mem}
 | "@"                                   { IDENT Delay}
 | "floor"                               { IDENT Floor}
+| "ceil"                               { IDENT Ceil}
+| "rint"                               { IDENT Rint}
 | "int"                                 { IDENT Int}
 | "int"                                 { IDENT Int}
+| "float"                              { IDENT Float}
 | "sin"                                 { IDENT Sin}
 | "sin"                                 { IDENT Sin}
+| "asin"                               { IDENT Asin}
 | "cos"                                 { IDENT Cos}
 | "cos"                                 { IDENT Cos}
+| "acos"                               { IDENT Acos}
+| "tan"                                        { IDENT Tan}
 | "atan"                                { IDENT Atan}
 | "atan"                                { IDENT Atan}
-| "atantwo"                             { IDENT Atan2}
+| "atantwo"                                    { IDENT Atan2}
+| "exp"                                        { IDENT Exp}
 | "sqrt"                                { IDENT Sqrt}
 | "sqrt"                                { IDENT Sqrt}
-| "rdtable"                             { IDENT Rdtable}
+| "log"                                        { IDENT Ln}
+| "logten"                             { IDENT Log10}
+| "pow"                                        { IDENT Power}
+| "abs"                                        { IDENT Abs}
+| "fmod"                               { IDENT Fmod}
 | "%"                                   { IDENT Mod}
 | "%"                                   { IDENT Mod}
+| "remainder"                          { IDENT Remainder}
 | "vectorize"                           { IDENT Vectorize}
 | "#"                                   { IDENT Vconcat}
 | "[]"                                  { IDENT Vpick }
 | "serialize"                           { IDENT Serialize}
 | "vectorize"                           { IDENT Vectorize}
 | "#"                                   { IDENT Vconcat}
 | "[]"                                  { IDENT Vpick }
 | "serialize"                           { IDENT Serialize}
-| ">"                                   { IDENT Larger}
-| "<"                                   { IDENT Smaller}
+| '>'                                   { IDENT Greater}
+| '<'                                   { IDENT Less}
+| ">="                                 { IDENT Gore}
+| "<="                                 { IDENT Lore}
+| "=="                                 { IDENT Equal}
+| "!="                                 { IDENT Different}
 | "max"                                        { IDENT Max}
 | "min"                                        { IDENT Min}
 | "prefix"                              { IDENT Prefix}
 | "selecttwo"                           { IDENT Select2}
 | "selectthree"                         { IDENT Select3}  
 | "max"                                        { IDENT Max}
 | "min"                                        { IDENT Min}
 | "prefix"                              { IDENT Prefix}
 | "selecttwo"                           { IDENT Select2}
 | "selectthree"                         { IDENT Select3}  
+| "rdtable"                             { IDENT Rdtable}
+| "rwtable"                            { IDENT Rwtable}
 
 
 | ['0'-'9']+ as a                      { CONST a }
 
 
 | ['0'-'9']+ as a                      { CONST a }
index 0b7cfde..68e550c 100644 (file)
@@ -31,17 +31,36 @@ class type value_type =
     method mul : value_type -> value_type
     method recip : value_type
     method div : value_type -> value_type
     method mul : value_type -> value_type
     method recip : value_type
     method div : value_type -> value_type
+    method power : value_type -> value_type
+    method _and : value_type -> value_type
+    method _or : value_type -> value_type
+    method _xor : value_type -> value_type
     method zero : value_type
     method floor : value_type
     method zero : value_type
     method floor : value_type
+    method ceil : value_type
+    method rint : value_type
     method int : value_type
     method int : value_type
+    method float : value_type
     method sin : value_type
     method sin : value_type
+    method asin : value_type
     method cos : value_type
     method cos : value_type
+    method acos : value_type
+    method tan : value_type
     method atan : value_type
     method atan : value_type
-    method sqrt : value_type
     method atan2 : value_type -> value_type
     method atan2 : value_type -> value_type
+    method expo : value_type
+    method sqrt : value_type
+    method ln : value_type
+    method log10 : value_type
+    method fmod : value_type -> value_type
     method _mod : value_type -> value_type
     method _mod : value_type -> value_type
-    method larger : value_type -> value_type
-    method smaller : value_type -> value_type
+    method remainder : value_type -> value_type
+    method greater : value_type -> value_type
+    method less : value_type -> value_type
+    method gore : value_type -> value_type
+    method lore : value_type -> value_type
+    method equal : value_type -> value_type
+    method different : value_type -> value_type
     method max : value_type -> value_type
     method min : value_type -> value_type
   end;;
     method max : value_type -> value_type
     method min : value_type -> value_type
   end;;
@@ -51,31 +70,51 @@ type symbol = Add
            | Sub
            | Mul
            | Div
            | Sub
            | Mul
            | Div
+           | Power
            | Pass
            | Stop
            | Pass
            | Stop
+           | And
+           | Or
+           | Xor
            | Mem
            | Delay
            | Floor
            | Mem
            | Delay
            | Floor
+           | Ceil
+           | Rint
            | Int
            | Int
+           | Float
            | Sin
            | Sin
+           | Asin
            | Cos
            | Cos
+           | Acos
+           | Tan
            | Atan
            | Atan2
            | Atan
            | Atan2
+           | Exp
            | Sqrt
            | Sqrt
-           | Rdtable
+           | Ln
+           | Log10
+           | Abs
+           | Fmod
            | Mod
            | Mod
+           | Remainder
            | Vectorize
            | Vconcat
            | Vpick
            | Serialize
            | Vectorize
            | Vconcat
            | Vpick
            | Serialize
-           | Larger
-           | Smaller
+           | Greater
+           | Less
+           | Gore
+           | Lore
+           | Equal
+           | Different
            | Max
            | Min
            | Prefix
            | Select2
            | Select3
            | Max
            | Min
            | Prefix
            | Select2
            | Select3
-
+           | Rdtable
+           | Rwtable
 
 type faust_exp =
          Const of basic
 
 type faust_exp =
          Const of basic
@@ -109,6 +148,10 @@ class type signal_type =
       method sub : signal_type -> signal_type
       method mul : signal_type -> signal_type
       method div : signal_type -> signal_type
       method sub : signal_type -> signal_type
       method mul : signal_type -> signal_type
       method div : signal_type -> signal_type
+      method power : signal_type -> signal_type
+      method _and : signal_type -> signal_type
+      method _or : signal_type -> signal_type
+      method _xor : signal_type -> signal_type
       method delay : signal_type -> signal_type
       method mem : signal_type
       method vectorize : signal_type -> signal_type
       method delay : signal_type -> signal_type
       method mem : signal_type
       method vectorize : signal_type -> signal_type
@@ -116,18 +159,36 @@ class type signal_type =
       method vconcat : signal_type -> signal_type
       method vpick : signal_type -> signal_type
       method floor : signal_type
       method vconcat : signal_type -> signal_type
       method vpick : signal_type -> signal_type
       method floor : signal_type
+      method ceil : signal_type
+      method rint : signal_type
       method int : signal_type
       method int : signal_type
+      method float : signal_type
       method sin : signal_type
       method sin : signal_type
+      method asin : signal_type
       method cos : signal_type
       method cos : signal_type
+      method acos : signal_type
+      method tan : signal_type
       method atan : signal_type
       method atan2 : signal_type -> signal_type
       method atan : signal_type
       method atan2 : signal_type -> signal_type
+      method expo : signal_type
       method sqrt : signal_type
       method sqrt : signal_type
+      method ln : signal_type
+      method log10 : signal_type
+      method abs : signal_type
+      method fmod : signal_type -> signal_type
       method _mod : signal_type -> signal_type
       method _mod : signal_type -> signal_type
-      method larger : signal_type -> signal_type
-      method smaller : signal_type -> signal_type
+      method remainder : signal_type -> signal_type
+      method greater : signal_type -> signal_type
+      method less : signal_type -> signal_type
+      method gore : signal_type -> signal_type
+      method lore : signal_type -> signal_type
+      method equal : signal_type -> signal_type
+      method different : signal_type -> signal_type
       method max : signal_type -> signal_type
       method min : signal_type -> signal_type
       method rdtable : signal_type -> signal_type -> signal_type
       method max : signal_type -> signal_type
       method min : signal_type -> signal_type
       method rdtable : signal_type -> signal_type -> signal_type
+      method rwtable : signal_type -> signal_type -> 
+       signal_type -> signal_type -> signal_type
       method select2 : signal_type -> signal_type -> signal_type
       method select3 : signal_type -> signal_type -> signal_type -> signal_type
       method prefix : signal_type -> signal_type
       method select2 : signal_type -> signal_type -> signal_type
       method select3 : signal_type -> signal_type -> signal_type -> signal_type
       method prefix : signal_type -> signal_type