X-Git-Url: https://scm.cri.mines-paristech.fr/git/Faustine.git/blobdiff_plain/06159b51a934937f647ec7119b47cb466d8e50b1..8e216a8d5f6b094308594009342e53ef122b8062:/interpretor/lexer.mll diff --git a/interpretor/lexer.mll b/interpretor/lexer.mll index a3a4746..353712a 100644 --- a/interpretor/lexer.mll +++ b/interpretor/lexer.mll @@ -1,18 +1,71 @@ -{open Parser} +{ +open Parser +open Types +} rule token = parse - [' ' '\t' '\n' ] { token lexbuf } -| ['a'-'z' 'A'-'Z']+ as x { IDENT x } -| ['+' '*' '-' '/' '!' '_' '#' - '@' '<' '>' '%'] as x { IDENT (String.make 1 x) } -| "[]" { IDENT "[]" } -| ['0'-'9']+ as a { CONST a } -| '.' { POINT } -| '(' { LPAR } -| ')' { RPAR } -| ',' { PAR } -| ':' { SEQ } -| "<:" { SPLIT } -| ":>" { MERGE } -| "~" { REC } -| eof { EOF } + [' ' '\t' '\n' ] { token lexbuf } + +| "+" { IDENT Add} +| "-" { IDENT Sub} +| "*" { IDENT Mul} +| "/" { IDENT Div} +| "_" { IDENT Pass} +| "!" { IDENT Stop} +| "&" { IDENT And} +| "|" { IDENT Or} +| "^" { 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} +| "powf" { IDENT Power} +| "abs" { IDENT Abs} +| "fmodf" { 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} +| "<<" { IDENT Shl} +| ">>" { IDENT Shr} +| "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 }