123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177(* Copyright (C) 2008 Yoann Padioleau *)modulePI=Parse_infoopenParser_java(*****************************************************************************)(* Token Helpers *)(*****************************************************************************)letis_eof=function|EOF_->true|_->falseletis_comment=function|TComment_|TCommentSpace_|TCommentNewline_->true|_->falseletis_just_comment=function|TComment_->true|_->falselettoken_kind_of_tokt=matchtwith|LC_->PI.LBrace|RC_->PI.RBrace|LP_->PI.LPar|RP_->PI.RPar|TComment_->PI.EsthetPI.Comment|TCommentSpace_->PI.EsthetPI.Space|TCommentNewline_->PI.EsthetPI.Newline|_->PI.Other(*****************************************************************************)(* Visitors *)(*****************************************************************************)(* Because ocamlyacc force us to do it that way. The ocamlyacc token
* cant be a pair of a sum type, it must be directly a sum type.
*)(* used by tokens to complete the parse_info with filename, line, col infos *)letvisitor_info_of_tokf=function|TUnknownii->TUnknown(fii)|TCommentii->TComment(fii)|TCommentSpaceii->TCommentSpace(fii)|TCommentNewlineii->TCommentNewline(fii)|TInt(s,ii)->TInt(s,fii)|TFloat(s,ii)->TFloat(s,fii)|TChar(s,ii)->TChar(s,fii)|TString(s,ii)->TString(s,fii)|TRUE(ii)->TRUE(fii)|FALSE(ii)->FALSE(fii)|NULL(ii)->NULL(fii)|IDENTIFIER(id,ii)->IDENTIFIER(id,fii)|PRIMITIVE_TYPE(s,ii)->PRIMITIVE_TYPE(s,fii)|OPERATOR_EQ(op,ii)->OPERATOR_EQ(op,fii)(* 3.11 Separators *)|LP(ii)->LP(fii)|RP(ii)->RP(fii)|LC(ii)->LC(fii)|RC(ii)->RC(fii)|LB(ii)->LB(fii)|LB_RB(ii)->LB_RB(fii)|RB(ii)->RB(fii)|SM(ii)->SM(fii)|CM(ii)->CM(fii)|DOT(ii)->DOT(fii)(* 3.12 Operators *)|EQ(ii)->EQ(fii)|GT(ii)->GT(fii)|LT(ii)->LT(fii)|LT2(ii)->LT2(fii)|NOT(ii)->NOT(fii)|COMPL(ii)->COMPL(fii)|COND(ii)->COND(fii)|COLON(ii)->COLON(fii)|EQ_EQ(ii)->EQ_EQ(fii)|LE(ii)->LE(fii)|GE(ii)->GE(fii)|NOT_EQ(ii)->NOT_EQ(fii)|AND_AND(ii)->AND_AND(fii)|OR_OR(ii)->OR_OR(fii)|INCR(ii)->INCR(fii)|DECR(ii)->DECR(fii)|PLUS(ii)->PLUS(fii)|MINUS(ii)->MINUS(fii)|TIMES(ii)->TIMES(fii)|DIV(ii)->DIV(fii)|AND(ii)->AND(fii)|OR(ii)->OR(fii)|XOR(ii)->XOR(fii)|MOD(ii)->MOD(fii)|LS(ii)->LS(fii)|SRS(ii)->SRS(fii)|URS(ii)->URS(fii)|AT(ii)->AT(fii)|DOTS(ii)->DOTS(fii)|ABSTRACT(ii)->ABSTRACT(fii)|BOOLEAN(ii)->BOOLEAN(fii)|BREAK(ii)->BREAK(fii)|BYTE(ii)->BYTE(fii)|CASE(ii)->CASE(fii)|CATCH(ii)->CATCH(fii)|CHAR(ii)->CHAR(fii)|CLASS(ii)->CLASS(fii)|CONST(ii)->CONST(fii)|CONTINUE(ii)->CONTINUE(fii)|DEFAULT(ii)->DEFAULT(fii)|DO(ii)->DO(fii)|DOUBLE(ii)->DOUBLE(fii)|ELSE(ii)->ELSE(fii)|EXTENDS(ii)->EXTENDS(fii)|FINAL(ii)->FINAL(fii)|FINALLY(ii)->FINALLY(fii)|FLOAT(ii)->FLOAT(fii)|FOR(ii)->FOR(fii)|GOTO(ii)->GOTO(fii)|IF(ii)->IF(fii)|IMPLEMENTS(ii)->IMPLEMENTS(fii)|IMPORT(ii)->IMPORT(fii)|INSTANCEOF(ii)->INSTANCEOF(fii)|INT(ii)->INT(fii)|INTERFACE(ii)->INTERFACE(fii)|LONG(ii)->LONG(fii)|NATIVE(ii)->NATIVE(fii)|NEW(ii)->NEW(fii)|PACKAGE(ii)->PACKAGE(fii)|PRIVATE(ii)->PRIVATE(fii)|PROTECTED(ii)->PROTECTED(fii)|PUBLIC(ii)->PUBLIC(fii)|RETURN(ii)->RETURN(fii)|SHORT(ii)->SHORT(fii)|STATIC(ii)->STATIC(fii)|STRICTFP(ii)->STRICTFP(fii)|SUPER(ii)->SUPER(fii)|SWITCH(ii)->SWITCH(fii)|SYNCHRONIZED(ii)->SYNCHRONIZED(fii)|THIS(ii)->THIS(fii)|THROW(ii)->THROW(fii)|THROWS(ii)->THROWS(fii)|TRANSIENT(ii)->TRANSIENT(fii)|TRY(ii)->TRY(fii)|VOID(ii)->VOID(fii)|VOLATILE(ii)->VOLATILE(fii)|WHILE(ii)->WHILE(fii)|ASSERT(ii)->ASSERT(fii)|ENUM(ii)->ENUM(fii)|EOF(ii)->EOF(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"(*****************************************************************************)(* Accessors *)(*****************************************************************************)(* todo: remove, just use by parse_java.ml checkpoint mechanism that
* we actually don't use
*)letline_of_toktok=letinfo=info_of_toktokinPI.line_of_infoinfo