123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149(* Yoann Padioleau
*
* Copyright (C) 2010 Facebook
* Copyright (C) 2019 Yoann Padioleau
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* version 2.1 as published by the Free Software Foundation, with the
* special exception on linking described in file license.txt.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file
* license.txt for more details.
*)openParser_python(*****************************************************************************)(* Token Helpers *)(*****************************************************************************)letis_eof=function|EOF_->true|_->falseletis_comment=function|TComment_|TCommentSpace_->true|_->falseletis_special=function|INDENT|DEDENT->true|_->false(*****************************************************************************)(* Visitors *)(*****************************************************************************)letvisitor_info_of_tokf=function|TUnknown(ii)->TUnknown(fii)|EOF(ii)->EOF(fii)|TCommentSpace(ii)->TCommentSpace(fii)|TComment(ii)->TComment(fii)|FSTRING_START(ii)->FSTRING_START(fii)|FSTRING_END(ii)->FSTRING_END(fii)|FSTRING_LBRACE(ii)->FSTRING_LBRACE(fii)|FSTRING_STRING(x,ii)->FSTRING_STRING(x,fii)|NAME(x,ii)->NAME(x,fii)|INT(x,ii)->INT(x,fii)|LONGINT(x,ii)->LONGINT(x,fii)|FLOAT(x,ii)->FLOAT(x,fii)|IMAG(x,ii)->IMAG(x,fii)|STR(x,ii)->STR(x,fii)|NONE(ii)->NONE(fii)|TRUE(ii)->TRUE(fii)|FALSE(ii)->FALSE(fii)|ASYNC(ii)->ASYNC(fii)|AWAIT(ii)->AWAIT(fii)|NONLOCAL(ii)->NONLOCAL(fii)|ELLIPSES(ii)->ELLIPSES(fii)|AND(ii)->AND(fii)|AS(ii)->AS(fii)|ASSERT(ii)->ASSERT(fii)|BREAK(ii)->BREAK(fii)|CLASS(ii)->CLASS(fii)|CONTINUE(ii)->CONTINUE(fii)|DEF(ii)->DEF(fii)|DEL(ii)->DEL(fii)|ELIF(ii)->ELIF(fii)|ELSE(ii)->ELSE(fii)|EXCEPT(ii)->EXCEPT(fii)|FINALLY(ii)->FINALLY(fii)|FOR(ii)->FOR(fii)|FROM(ii)->FROM(fii)|GLOBAL(ii)->GLOBAL(fii)|IF(ii)->IF(fii)|IMPORT(ii)->IMPORT(fii)|IN(ii)->IN(fii)|IS(ii)->IS(fii)|LAMBDA(ii)->LAMBDA(fii)|NOT(ii)->NOT(fii)|OR(ii)->OR(fii)|PASS(ii)->PASS(fii)|RAISE(ii)->RAISE(fii)|RETURN(ii)->RETURN(fii)|TRY(ii)->TRY(fii)|WHILE(ii)->WHILE(fii)|WITH(ii)->WITH(fii)|YIELD(ii)->YIELD(fii)|LPAREN(ii)->LPAREN(fii)|RPAREN(ii)->RPAREN(fii)|LBRACK(ii)->LBRACK(fii)|RBRACK(ii)->RBRACK(fii)|LBRACE(ii)->LBRACE(fii)|RBRACE(ii)->RBRACE(fii)|COLON(ii)->COLON(fii)|SEMICOL(ii)->SEMICOL(fii)|DOT(ii)->DOT(fii)|COMMA(ii)->COMMA(fii)|BACKQUOTE(ii)->BACKQUOTE(fii)|AT(ii)->AT(fii)|ADD(ii)->ADD(fii)|SUB(ii)->SUB(fii)|MULT(ii)->MULT(fii)|DIV(ii)->DIV(fii)|MOD(ii)->MOD(fii)|POW(ii)->POW(fii)|FDIV(ii)->FDIV(fii)|BITOR(ii)->BITOR(fii)|BITAND(ii)->BITAND(fii)|BITXOR(ii)->BITXOR(fii)|BITNOT(ii)->BITNOT(fii)|LSHIFT(ii)->LSHIFT(fii)|RSHIFT(ii)->RSHIFT(fii)|EQ(ii)->EQ(fii)|ADDEQ(ii)->ADDEQ(fii)|SUBEQ(ii)->SUBEQ(fii)|MULTEQ(ii)->MULTEQ(fii)|DIVEQ(ii)->DIVEQ(fii)|MODEQ(ii)->MODEQ(fii)|POWEQ(ii)->POWEQ(fii)|FDIVEQ(ii)->FDIVEQ(fii)|ANDEQ(ii)->ANDEQ(fii)|OREQ(ii)->OREQ(fii)|XOREQ(ii)->XOREQ(fii)|LSHEQ(ii)->LSHEQ(fii)|RSHEQ(ii)->RSHEQ(fii)|EQUAL(ii)->EQUAL(fii)|NOTEQ(ii)->NOTEQ(fii)|LT(ii)->LT(fii)|GT(ii)->GT(fii)|LEQ(ii)->LEQ(fii)|GEQ(ii)->GEQ(fii)|INDENT->INDENT|DEDENT->DEDENT|NEWLINE(ii)->NEWLINE(fii)letinfo_of_toktok=letres=refNoneinvisitor_info_of_tok(funii->res:=Someii;ii)tok|>ignore;match!reswith|Somex->x|None->Parse_info.fake_info"NOTOK"