Nested vectors are implemented, including parser and class nstio.
[Faustine.git] / interpreter / nstparser.mly
diff --git a/interpreter/nstparser.mly b/interpreter/nstparser.mly
new file mode 100644 (file)
index 0000000..fadf9f6
--- /dev/null
@@ -0,0 +1,24 @@
+%{ 
+       open Types 
+%}
+
+%token <string> CONST
+%token LPAR RPAR EOF POINT COMMA
+%right COMMA
+%left POINT
+%start main
+%type <Types.nest> main
+%%
+main:  nest EOF                       { $1 };
+
+scalar: CONST                         { Scalar(float_of_string $1) }
+    | CONST POINT                     { Scalar(float_of_string $1) }
+    | CONST POINT CONST               { Scalar(float_of_string ($1 ^ "." ^ $3)) };
+
+vector: LPAR nestpar RPAR             { Vector($2) };
+
+nestpar: nest                         { Unary($1) }
+    | nest COMMA nestpar              { Binary($1,$3) };
+
+nest: scalar                          { $1 }
+    | vector                          { $1 };