123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478(* Yoann Padioleau
*
* Copyright (C) 2010 Facebook
*
* 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_phpmodulePI=Parse_info(*****************************************************************************)(* Token Helpers *)(*****************************************************************************)letis_eof=function|EOF_->true|_->falseletis_comment=function|T_COMMENT_|T_DOC_COMMENT_|TSpaces_|TNewline_->true|TCommentPP_->true|_->falseletis_just_comment=function|T_COMMENT_->true|_->falselettoken_kind_of_tokt=matchtwith|TOBRACE_->PI.LBrace|TCBRACE_->PI.RBrace|TOPAR_|T_LAMBDA_OPAR_->PI.LPar|TCPAR_|T_LAMBDA_CPAR_->PI.RPar|T_COMMENT_|T_DOC_COMMENT_|TCommentPP_->PI.EsthetPI.Comment|TSpaces_->PI.EsthetPI.Space|TNewline_->PI.EsthetPI.Newline(* just after a ?>, the newline are not anymore TNewline but that *)|T_INLINE_HTML("\n",_)->PI.EsthetPI.Newline|_->PI.Other(*****************************************************************************)(* Visitors *)(*****************************************************************************)(* Ugly repetitive code but ocamlyacc force us to do it that way.
* Indeed the ocamlyacc token cant be a pair of a sum type, it must be
* directly a sum type. Fortunately most of the code was generated via an
* emacs macro working on the type definition of token in parser_php.mli
*)letinfo_of_tok=function|TUnknownii->ii|TSpacesii->ii|TNewlineii->ii|TCommentPPii->ii|T_LNUMBER(_s,ii)->ii|T_DNUMBER(_s,ii)->ii|T_IDENT(_s,ii)->ii|T_STRING_VARNAME(_s,ii)->ii|T_VARIABLE(_s,ii)->ii|T_NUM_STRING(_s,ii)->ii|T_INLINE_HTML(_s,ii)->ii|T_ENCAPSED_AND_WHITESPACE(_s,ii)->ii|T_CONSTANT_ENCAPSED_STRING(_s,ii)->ii|T_ECHOii->ii|T_PRINTii->ii|T_DOii->ii|T_WHILEii->ii|T_ENDWHILEii->ii|T_FORii->ii|T_ENDFORii->ii|T_FOREACHii->ii|T_ENDFOREACHii->ii|T_SWITCHii->ii|T_ENDSWITCHii->ii|T_CASEii->ii|T_DEFAULTii->ii|T_BREAKii->ii|T_CONTINUEii->ii|T_RETURNii->ii|T_TRYii->ii|T_CATCHii->ii|T_FINALLYii->ii|T_THROWii->ii|T_DECLAREii->ii|T_ENDDECLAREii->ii|T_USEii->ii|T_GLOBALii->ii|T_ASii->ii|T_SUPERii->ii|T_FUNCTIONii->ii|T_CONSTii->ii|T_STATICii->ii|T_ABSTRACTii->ii|T_FINALii->ii|T_ASYNCii->ii|T_PRIVATEii->ii|T_PROTECTEDii->ii|T_PUBLICii->ii|T_VARii->ii|T_UNSETii->ii|T_ISSETii->ii|T_EMPTYii->ii|T_CLASSii->ii|T_ENUMii->ii|T_INTERFACEii->ii|T_EXTENDSii->ii|T_IMPLEMENTSii->ii|T_OBJECT_OPERATORii->ii|T_ARROWii->ii|T_DOUBLE_ARROWii->ii|T_LISTii->ii|T_ARRAYii->ii|T_CLASS_Cii->ii|T_METHOD_Cii->ii|T_FUNC_Cii->ii|T_LINEii->ii|T_FILEii->ii|T_DIRii->ii|T_COMMENTii->ii|T_DOC_COMMENTii->ii|T_OPEN_TAGii->ii|T_OPEN_TAG_WITH_ECHOii->ii|T_CLOSE_TAG_OF_ECHOii->ii|T_CLOSE_TAGii->ii|T_START_HEREDOCii->ii|T_END_HEREDOCii->ii|T_DOLLAR_OPEN_CURLY_BRACESii->ii|T_CURLY_OPENii->ii|TCOLCOLii->ii|T_EXITii->ii|T_IFii->ii|TCOLONii->ii|TCOMMAii->ii|TDOTii->ii|TBANGii->ii|TTILDEii->ii|TQUESTIONii->ii|TOBRAii->ii|TPLUSii->ii|TMINUSii->ii|TMULii->ii|TDIVii->ii|TMODii->ii|TANDii->ii|TORii->ii|TEQii->ii|TSMALLERii->ii|TGREATERii->ii|T_PLUS_EQUALii->ii|T_MINUS_EQUALii->ii|T_MUL_EQUALii->ii|T_DIV_EQUALii->ii|T_CONCAT_EQUALii->ii|T_MOD_EQUALii->ii|T_AND_EQUALii->ii|T_OR_EQUALii->ii|T_XOR_EQUALii->ii|T_SL_EQUALii->ii|T_SR_EQUALii->ii|T_INCii->ii|T_DECii->ii|T_BOOLEAN_ORii->ii|T_BOOLEAN_ANDii->ii|T_BOOLEAN_PIPEii->ii|T_LOGICAL_ORii->ii|T_LOGICAL_ANDii->ii|T_LOGICAL_XORii->ii|T_SLii->ii|T_SRii->ii|T_IS_SMALLER_OR_EQUALii->ii|T_IS_GREATER_OR_EQUALii->ii|T_BOOL_CASTii->ii|T_INT_CASTii->ii|T_DOUBLE_CASTii->ii|T_STRING_CASTii->ii|T_ARRAY_CASTii->ii|T_OBJECT_CASTii->ii|T_UNSET_CASTii->ii|T_IS_IDENTICALii->ii|T_IS_NOT_IDENTICALii->ii|T_IS_EQUALii->ii|T_IS_NOT_EQUALii->ii|TXORii->ii|T__ATii->ii|T_NEWii->ii|T_CLONEii->ii|T_INSTANCEOFii->ii|T_INCLUDEii->ii|T_INCLUDE_ONCEii->ii|T_REQUIREii->ii|T_REQUIRE_ONCEii->ii|T_EVALii->ii|T_ELSEii->ii|T_ELSEIFii->ii|T_ENDIFii->ii|TOPARii->ii|TCPARii->ii|T_LAMBDA_OPARii->ii|T_LAMBDA_CPARii->ii|TOBRACEii->ii|TCBRACEii->ii|TCBRAii->ii|TBACKQUOTEii->ii|TSEMICOLONii->ii|TDOLLARii->ii|TDOLLARDOLLARii->ii|TGUILii->ii|T_ELLIPSIS(ii)->ii|T_CLASS_XDEBUG(ii)->ii|T_RESOURCE_XDEBUG(ii)->ii|T_XHP_COLONID_DEF(_s,ii)->ii|T_XHP_PERCENTID_DEF(_s,ii)->ii|T_XHP_OPEN_TAG(_xs,ii)->ii|T_XHP_CLOSE_TAG(_xs,ii)->ii|T_XHP_GT(ii)->ii|T_XHP_SLASH_GT(ii)->ii|T_XHP_ATTR(_s,ii)->ii|T_XHP_TEXT(_s,ii)->ii|T_XHP_ATTRIBUTE(ii)->ii|T_XHP_CHILDREN(ii)->ii|T_XHP_CATEGORY(ii)->ii|T_XHP_REQUIRED(ii)->ii|T_XHP_ANY(ii)->ii|T_XHP_PCDATA(ii)->ii|T_YIELD(ii)->ii|T_AWAIT(ii)->ii|T_SELF(ii)->ii|T_PARENT(ii)->ii|T_TRAIT(ii)->ii|T_INSTEADOF(ii)->ii|T_TRAIT_C(ii)->ii|T_TYPE(ii)->ii|T_NEWTYPE(ii)->ii|T_SHAPE(ii)->ii|T_NAMESPACE(ii)->ii|TANTISLASH(ii)->ii|T_NAMESPACE_C(ii)->ii|EOFii->ii|T_ROCKETii->iiletvisitor_info_of_tokf=function|TUnknownii->TUnknown(fii)|TSpacesii->TSpaces(fii)|TNewlineii->TNewline(fii)|TCommentPPii->TCommentPP(fii)|T_LNUMBER(s,ii)->T_LNUMBER(s,fii)|T_DNUMBER(s,ii)->T_DNUMBER(s,fii)|T_IDENT(s,ii)->T_IDENT(s,fii)|T_STRING_VARNAME(s,ii)->T_STRING_VARNAME(s,fii)|T_VARIABLE(s,ii)->T_VARIABLE(s,fii)|T_NUM_STRING(s,ii)->T_NUM_STRING(s,fii)|T_INLINE_HTML(s,ii)->T_INLINE_HTML(s,fii)|T_ENCAPSED_AND_WHITESPACE(s,ii)->T_ENCAPSED_AND_WHITESPACE(s,fii)|T_CONSTANT_ENCAPSED_STRING(s,ii)->T_CONSTANT_ENCAPSED_STRING(s,fii)|T_ECHOii->T_ECHO(fii)|T_PRINTii->T_PRINT(fii)|T_DOii->T_DO(fii)|T_WHILEii->T_WHILE(fii)|T_ENDWHILEii->T_ENDWHILE(fii)|T_FORii->T_FOR(fii)|T_ENDFORii->T_ENDFOR(fii)|T_FOREACHii->T_FOREACH(fii)|T_ENDFOREACHii->T_ENDFOREACH(fii)|T_SWITCHii->T_SWITCH(fii)|T_ENDSWITCHii->T_ENDSWITCH(fii)|T_CASEii->T_CASE(fii)|T_DEFAULTii->T_DEFAULT(fii)|T_BREAKii->T_BREAK(fii)|T_CONTINUEii->T_CONTINUE(fii)|T_RETURNii->T_RETURN(fii)|T_TRYii->T_TRY(fii)|T_CATCHii->T_CATCH(fii)|T_FINALLYii->T_FINALLY(fii)|T_THROWii->T_THROW(fii)|T_DECLAREii->T_DECLARE(fii)|T_ENDDECLAREii->T_ENDDECLARE(fii)|T_USEii->T_USE(fii)|T_GLOBALii->T_GLOBAL(fii)|T_ASii->T_AS(fii)|T_SUPERii->T_SUPER(fii)|T_FUNCTIONii->T_FUNCTION(fii)|T_CONSTii->T_CONST(fii)|T_STATICii->T_STATIC(fii)|T_ABSTRACTii->T_ABSTRACT(fii)|T_FINALii->T_FINAL(fii)|T_ASYNCii->T_ASYNC(fii)|T_PRIVATEii->T_PRIVATE(fii)|T_PROTECTEDii->T_PROTECTED(fii)|T_PUBLICii->T_PUBLIC(fii)|T_VARii->T_VAR(fii)|T_UNSETii->T_UNSET(fii)|T_ISSETii->T_ISSET(fii)|T_EMPTYii->T_EMPTY(fii)|T_CLASSii->T_CLASS(fii)|T_ENUMii->T_ENUM(fii)|T_INTERFACEii->T_INTERFACE(fii)|T_EXTENDSii->T_EXTENDS(fii)|T_IMPLEMENTSii->T_IMPLEMENTS(fii)|T_OBJECT_OPERATORii->T_OBJECT_OPERATOR(fii)|T_ARROWii->T_ARROW(fii)|T_DOUBLE_ARROWii->T_DOUBLE_ARROW(fii)|T_LISTii->T_LIST(fii)|T_ARRAYii->T_ARRAY(fii)|T_CLASS_Cii->T_CLASS_C(fii)|T_METHOD_Cii->T_METHOD_C(fii)|T_FUNC_Cii->T_FUNC_C(fii)|T_LINEii->T_LINE(fii)|T_FILEii->T_FILE(fii)|T_DIRii->T_DIR(fii)|T_COMMENTii->T_COMMENT(fii)|T_DOC_COMMENTii->T_DOC_COMMENT(fii)|T_OPEN_TAGii->T_OPEN_TAG(fii)|T_OPEN_TAG_WITH_ECHOii->T_OPEN_TAG_WITH_ECHO(fii)|T_CLOSE_TAG_OF_ECHOii->T_CLOSE_TAG_OF_ECHO(fii)|T_CLOSE_TAGii->T_CLOSE_TAG(fii)|T_START_HEREDOCii->T_START_HEREDOC(fii)|T_END_HEREDOCii->T_END_HEREDOC(fii)|T_DOLLAR_OPEN_CURLY_BRACESii->T_DOLLAR_OPEN_CURLY_BRACES(fii)|T_CURLY_OPENii->T_CURLY_OPEN(fii)|TCOLCOLii->TCOLCOL(fii)|T_EXITii->T_EXIT(fii)|T_IFii->T_IF(fii)|TCOLONii->TCOLON(fii)|TCOMMAii->TCOMMA(fii)|TDOTii->TDOT(fii)|TBANGii->TBANG(fii)|TTILDEii->TTILDE(fii)|TQUESTIONii->TQUESTION(fii)|TOBRAii->TOBRA(fii)|TPLUSii->TPLUS(fii)|TMINUSii->TMINUS(fii)|TMULii->TMUL(fii)|TDIVii->TDIV(fii)|TMODii->TMOD(fii)|TANDii->TAND(fii)|TORii->TOR(fii)|TEQii->TEQ(fii)|TSMALLERii->TSMALLER(fii)|TGREATERii->TGREATER(fii)|T_PLUS_EQUALii->T_PLUS_EQUAL(fii)|T_MINUS_EQUALii->T_MINUS_EQUAL(fii)|T_MUL_EQUALii->T_MUL_EQUAL(fii)|T_DIV_EQUALii->T_DIV_EQUAL(fii)|T_CONCAT_EQUALii->T_CONCAT_EQUAL(fii)|T_MOD_EQUALii->T_MOD_EQUAL(fii)|T_AND_EQUALii->T_AND_EQUAL(fii)|T_OR_EQUALii->T_OR_EQUAL(fii)|T_XOR_EQUALii->T_XOR_EQUAL(fii)|T_SL_EQUALii->T_SL_EQUAL(fii)|T_SR_EQUALii->T_SR_EQUAL(fii)|T_INCii->T_INC(fii)|T_DECii->T_DEC(fii)|T_BOOLEAN_ORii->T_BOOLEAN_OR(fii)|T_BOOLEAN_ANDii->T_BOOLEAN_AND(fii)|T_BOOLEAN_PIPEii->T_BOOLEAN_PIPE(fii)|T_LOGICAL_ORii->T_LOGICAL_OR(fii)|T_LOGICAL_ANDii->T_LOGICAL_AND(fii)|T_LOGICAL_XORii->T_LOGICAL_XOR(fii)|T_SLii->T_SL(fii)|T_SRii->T_SR(fii)|T_IS_SMALLER_OR_EQUALii->T_IS_SMALLER_OR_EQUAL(fii)|T_IS_GREATER_OR_EQUALii->T_IS_GREATER_OR_EQUAL(fii)|T_BOOL_CASTii->T_BOOL_CAST(fii)|T_INT_CASTii->T_INT_CAST(fii)|T_DOUBLE_CASTii->T_DOUBLE_CAST(fii)|T_STRING_CASTii->T_STRING_CAST(fii)|T_ARRAY_CASTii->T_ARRAY_CAST(fii)|T_OBJECT_CASTii->T_OBJECT_CAST(fii)|T_UNSET_CASTii->T_UNSET_CAST(fii)|T_IS_IDENTICALii->T_IS_IDENTICAL(fii)|T_IS_NOT_IDENTICALii->T_IS_NOT_IDENTICAL(fii)|T_IS_EQUALii->T_IS_EQUAL(fii)|T_IS_NOT_EQUALii->T_IS_NOT_EQUAL(fii)|TXORii->TXOR(fii)|T__ATii->T__AT(fii)|T_NEWii->T_NEW(fii)|T_CLONEii->T_CLONE(fii)|T_INSTANCEOFii->T_INSTANCEOF(fii)|T_INCLUDEii->T_INCLUDE(fii)|T_INCLUDE_ONCEii->T_INCLUDE_ONCE(fii)|T_REQUIREii->T_REQUIRE(fii)|T_REQUIRE_ONCEii->T_REQUIRE_ONCE(fii)|T_EVALii->T_EVAL(fii)|T_ELSEii->T_ELSE(fii)|T_ELSEIFii->T_ELSEIF(fii)|T_ENDIFii->T_ENDIF(fii)|TOPARii->TOPAR(fii)|TCPARii->TCPAR(fii)|T_LAMBDA_OPARii->T_LAMBDA_OPAR(fii)|T_LAMBDA_CPARii->T_LAMBDA_CPAR(fii)|TOBRACEii->TOBRACE(fii)|TCBRACEii->TCBRACE(fii)|TCBRAii->TCBRA(fii)|TBACKQUOTEii->TBACKQUOTE(fii)|TSEMICOLONii->TSEMICOLON(fii)|TDOLLARii->TDOLLAR(fii)|TDOLLARDOLLARii->TDOLLARDOLLAR(fii)|TGUILii->TGUIL(fii)|T_ELLIPSIS(ii)->T_ELLIPSIS(fii)|T_CLASS_XDEBUG(ii)->T_CLASS_XDEBUG(fii)|T_RESOURCE_XDEBUG(ii)->T_RESOURCE_XDEBUG(fii)|T_XHP_COLONID_DEF(s,ii)->T_XHP_COLONID_DEF(s,fii)|T_XHP_PERCENTID_DEF(s,ii)->T_XHP_PERCENTID_DEF(s,fii)|T_XHP_OPEN_TAG(xs,ii)->T_XHP_OPEN_TAG(xs,fii)|T_XHP_CLOSE_TAG(xs,ii)->T_XHP_CLOSE_TAG(xs,fii)|T_XHP_GT(ii)->T_XHP_GT(fii)|T_XHP_SLASH_GT(ii)->T_XHP_SLASH_GT(fii)|T_XHP_ATTR(s,ii)->T_XHP_ATTR(s,fii)|T_XHP_TEXT(s,ii)->T_XHP_TEXT(s,fii)|T_XHP_ATTRIBUTE(ii)->T_XHP_ATTRIBUTE(fii)|T_XHP_CHILDREN(ii)->T_XHP_CHILDREN(fii)|T_XHP_CATEGORY(ii)->T_XHP_CATEGORY(fii)|T_XHP_REQUIRED(ii)->T_XHP_REQUIRED(fii)|T_XHP_ANY(ii)->T_XHP_ANY(fii)|T_XHP_PCDATA(ii)->T_XHP_PCDATA(fii)|T_YIELD(ii)->T_YIELD(fii)|T_AWAIT(ii)->T_AWAIT(fii)|T_SELF(ii)->T_SELF(fii)|T_PARENT(ii)->T_PARENT(fii)|T_TRAIT(ii)->T_TRAIT(fii)|T_INSTEADOF(ii)->T_INSTEADOF(fii)|T_TRAIT_C(ii)->T_TRAIT_C(fii)|T_TYPE(ii)->T_TYPE(fii)|T_NEWTYPE(ii)->T_TYPE(fii)|T_SHAPE(ii)->T_SHAPE(fii)|T_NAMESPACE(ii)->T_NAMESPACE(fii)|TANTISLASH(ii)->TANTISLASH(fii)|T_NAMESPACE_C(ii)->T_NAMESPACE_C(fii)|EOFii->EOF(fii)|T_ROCKETii->T_ROCKET(fii)(*****************************************************************************)(* Accessors *)(*****************************************************************************)letline_of_toktok=letinfo=info_of_toktokinPI.line_of_infoinfo