{
open Parser
open Types
}

rule token = parse
  [' ' '\t' '\n' ]                	{ token lexbuf }

| "+"                                   { IDENT Add}
| "-"                                   { IDENT Sup}
| "*"                                   { IDENT Mul}
| "/"                                   { IDENT Div}
| "_"                                   { IDENT Pass}
| "!"                                   { IDENT Stop}
| "mem"                                 { IDENT Mem}
| "@"                                   { IDENT Delay}
| "floor"                               { IDENT Floor}
| "int"                                 { IDENT Int}
| "sin"                                 { IDENT Sin}
| "cos"                                 { IDENT Cos}
| "atan"                                { IDENT Atan}
| "atantwo"                             { IDENT Atantwo}
| "sqrt"                                { IDENT Sqrt}
| "rdtable"                             { IDENT Rdtable}
| "%"                                   { IDENT Mod}
| "vectorize"                           { IDENT Vectorize}
| "#"                                   { IDENT Vconcat}
| "[]"                                  { IDENT Vpick }
| "serialize"                           { IDENT Serialize}
| ">"                                   { IDENT Larger}
| "<"                                   { IDENT Smaller}
| "prefix"                              { IDENT Prefix}
| "selecttwo"                           { IDENT Selecttwo}
| "selectthree"                         { IDENT Selectthree}  


| ['0'-'9']+ as a		        { CONST a }
| '.'                                   { POINT }


| '('               	       	        { LPAR }
| ')'         		                { RPAR }
| ','					{ PAR }
| ':'					{ SEQ }
| "<:"				        { SPLIT }
| ":>"					{ MERGE }
| "~"					{ REC }
| eof					{ EOF }