{ open Parser open Types } rule token = parse [' ' '\t' '\n' ] { token lexbuf } | "+" { IDENT Add} | "-" { IDENT Sub} | "*" { IDENT Mul} | "/" { IDENT Div} | "^" { IDENT Power} | "_" { IDENT Pass} | "!" { IDENT Stop} | "&" { IDENT And} | "|" { IDENT Or} | "xor" { IDENT Xor} | "mem" { IDENT Mem} | "@" { IDENT Delay} | "floor" { IDENT Floor} | "ceil" { IDENT Ceil} | "rint" { IDENT Rint} | "int" { IDENT Int} | "float" { IDENT Float} | "sin" { IDENT Sin} | "asin" { IDENT Asin} | "cos" { IDENT Cos} | "acos" { IDENT Acos} | "tan" { IDENT Tan} | "atan" { IDENT Atan} | "atantwo" { IDENT Atan2} | "exp" { IDENT Exp} | "sqrt" { IDENT Sqrt} | "log" { IDENT Ln} | "logten" { IDENT Lg} | "pow" { IDENT Power} | "abs" { IDENT Abs} | "fmod" { IDENT Fmod} | "%" { IDENT Mod} | "remainder" { IDENT Remainder} | "vectorize" { IDENT Vectorize} | "#" { IDENT Vconcat} | "[]" { IDENT Vpick } | "serialize" { IDENT Serialize} | '>' { IDENT Gt} | '<' { IDENT Lt} | ">=" { IDENT Geq} | "<=" { IDENT Leq} | "==" { IDENT Eq} | "!=" { IDENT Neq} | "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 } | '.' { POINT } | '(' { LPAR } | ')' { RPAR } | ',' { PAR } | ':' { SEQ } | "<:" { SPLIT } | ":>" { MERGE } | "~" { REC } | eof { EOF }