[' ' '\t'] (* skip blanks *) '\n' (* skip blanks *) '=' { EQUAL } '~' { OBSEQ } "::" { DOUBLECOLON } ":=" { ASSIGN } ':' { COLON } ';' { SEMICOLON } ',' { COMMA } '(' { OPAREN } ')' { CPAREN } '[' { OBRACKET } ']' { CBRACKET } '(' { OPAREN } ')' { CPAREN } "->" { ARROW } '{' { OBRACE} '}' { CBRACE} '%' [^'\n'] * -> Comment "(*" -> Comment "PVS " { PVS_FORMULA( f ) } '"' -> String "Proj_"[0-9]+ { PROJ_N(i) } ['A'-'Z' 'a'-'z']['A'-'Z' 'a'-'z' '_' '0'-'9' '?']* { ID( lexeme lexbuf ) } ['0'-'9']+ { VALUE(int_of_string(lexeme lexbuf))} _ { raise Parsing.Parse_error } eof { EOF }PVS formulas start with "PVS " and have to be terminated with "ENDPVS". Strings are enclosed in double quotes ("), Backslash (\) can be used as escape character (eg "\""). Comments are either PVS style starting with "%" including anything until the end of the line or CAML style "(* ... *)".