123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281(*
Copyright 2012-2025 Codinuum Software Lab <https://codinuum.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*)(* token.ml *)moduleParserlib_base=Langs_common.Parserlib_basemodulePosition=Langs_common.PositionopenPrintfopenTokens_modulePB=Parserlib_basetypet=T.tokenPB.tokenletget_rawtoken(rt,_,_)=rtletrawtoken_to_string=function|AND->"AND"|AS->"AS"|ASSERT->"ASSERT"|BREAK->"BREAK"|CASE->"CASE"|CLASS->"CLASS"|CONTINUE->"CONTINUE"|DEF->"DEF"|ELIF->"ELIF"|ELSE->"ELSE"|EXCEPT->"EXCEPT"|EXEC->"EXEC"|FALSE->"FALSE"|FINALLY->"FINALLY"|FOR->"FOR"|FROM->"FROM"|GLOBAL->"GLOBAL"|IF->"IF"|IMPORT->"IMPORT"|IN->"IN"|IS->"IS"|LAMBDA->"LAMBDA"|MATCH->"MATCH"|NONE->"NONE"|NOT->"NOT"|OR->"OR"|PASS->"PASS"|PRINT->"PRINT"|RAISE->"RAISE"|RETURN->"RETURN"|TRUE->"TRUE"|TRY->"TRY"|WHILE->"WHILE"|WITHx->"WITH"|YIELD->"YIELD"|NONLOCAL->"NONLOCAL"|DEL->"DEL"|AWAIT->"AWAIT"|ASYNC->"ASYNC"|NAMExs->sprintf"NAME(%s)"s|INDENT->"INDENT"|DEDENT->"DEDENT"|NEWLINEn->sprintf"NEWLINE(%d)"n|INTEGERs->sprintf"INTEGER(%s)"s|LONGINTEGERs->sprintf"LONGINTEGER(%s)"s|FLOATNUMBERs->sprintf"FLOATNUMBER(%s)"s|IMAGNUMBERs->sprintf"IMAGNUMBER(%s)"s|SHORTSTRINGs->sprintf"SHORTSTRING(%s)"s|LONGSTRING_BEGIN_Ss->sprintf"LONGSTRING_BEGIN_S(%s)"s|LONGSTRING_BEGIN_Ds->sprintf"LONGSTRING_BEGIN_D(%s)"s|LONGSTRING_RESTs->sprintf"LONGSTRING_REST(%s)"s|EQ_EQ->"EQ_EQ"|LT_EQ->"LT_EQ"|GT_EQ->"GT_EQ"|EXCLAM_EQ->"EXCLAM_EQ"|LT_GT->"LT_GT"|STAR_STAR->"STAR_STAR"|SLASH_SLASH->"SLASH_SLASH"|LT_LT->"LT_LT"|GT_GT->"GT_GT"|PLUS_EQ->"PLUS_EQ"|MINUS_EQ->"MINUS_EQ"|STAR_EQ->"STAR_EQ"|SLASH_EQ->"SLASH_EQ"|SLASH_SLASH_EQ->"SLASH_SLASH_EQ"|PERCENT_EQ->"PERCENT_EQ"|AMP_EQ->"AMP_EQ"|PIPE_EQ->"PIPE_EQ"|HAT_EQ->"HAT_EQ"|GT_GT_EQ->"GT_GT_EQ"|LT_LT_EQ->"LT_LT_EQ"|STAR_STAR_EQ->"STAR_STAR_EQ"|MINUS_GT->"MINUS_GT"|COLON_EQ->"COLON_EQ"|PLUS->"PLUS"|MINUS->"MINUS"|STAR->"STAR"|SLASH->"SLASH"|PERCENT->"PERCENT"|AMP->"AMP"|PIPE->"PIPE"|HAT->"HAT"|TILDE->"TILDE"|GT->"GT"|LT->"LT"|LPAREN->"LPAREN"|RPAREN->"RPAREN"|LBRACE->"LBRACE"|RBRACE->"RBRACE"|LBRACKET->"LBRACKET"|RBRACKET->"RBRACKET"|AT->"AT"|COMMA->"COMMA"|COLON->"COLON"|DOT->"DOT"|BACKQUOTE->"BACKQUOTE"|EQ->"EQ"|SEMICOLON->"SEMICOLON"|ELLIPSIS->"ELLIPSIS"|UNDERSCORE->"UNDERSCORE"|EOF->"EOF"|ERRORs->sprintf"ERROR(%s)"s|MARKERs->sprintf"MARKER(%s)"sletrawtoken_to_orig=function|AND->"and"|AS->"as"|ASSERT->"assert"|BREAK->"break"|CASE->"case"|CLASS->"class"|CONTINUE->"continue"|DEF->"def"|ELIF->"elif"|ELSE->"else"|EXCEPT->"except"|EXEC->"exec"|FALSE->"False"|FINALLY->"finally"|FOR->"for"|FROM->"from"|GLOBAL->"global"|IF->"if"|IMPORT->"import"|IN->"in"|IS->"is"|LAMBDA->"lambda"|MATCH->"match"|NONE->"None"|NOT->"not"|OR->"or"|PASS->"pass"|PRINT->"print"|RAISE->"raise"|RETURN->"return"|TRUE->"True"|TRY->"try"|WHILE->"while"|WITHx->"with"|YIELD->"yield"|NONLOCAL->"nonlocal"|DEL->"del"|AWAIT->"await"|ASYNC->"async"|NAMExs->s|INDENT->"INDENT"|DEDENT->"DEDENT"|NEWLINEn->sprintf"NEWLINE(%d)"n|INTEGERs->s|LONGINTEGERs->s|FLOATNUMBERs->s|IMAGNUMBERs->s|SHORTSTRINGs->s|LONGSTRING_BEGIN_Ss->s|LONGSTRING_BEGIN_Ds->s|LONGSTRING_RESTs->s|EQ_EQ->"=="|LT_EQ->"<="|GT_EQ->">="|EXCLAM_EQ->"!="|LT_GT->"<>"|STAR_STAR->"**"|SLASH_SLASH->"//"|LT_LT->"<<"|GT_GT->">>"|PLUS_EQ->"+="|MINUS_EQ->"-="|STAR_EQ->"*="|SLASH_EQ->"/="|SLASH_SLASH_EQ->"//="|PERCENT_EQ->"%="|AMP_EQ->"&="|PIPE_EQ->"|="|HAT_EQ->"^="|GT_GT_EQ->">>="|LT_LT_EQ->"<<="|STAR_STAR_EQ->"**="|MINUS_GT->"->"|COLON_EQ->":="|PLUS->"+"|MINUS->"-"|STAR->"*"|SLASH->"/"|PERCENT->"%"|AMP->"&"|PIPE->"|"|HAT->"^"|TILDE->"~"|GT->">"|LT->"<"|LPAREN->"("|RPAREN->")"|LBRACE->"{"|RBRACE->"}"|LBRACKET->"["|RBRACKET->"]"|AT->"@"|COMMA->","|COLON->":"|DOT->"."|BACKQUOTE->"`"|EQ->"="|SEMICOLON->";"|ELLIPSIS->"..."|UNDERSCORE->"_"|EOF->"EOF"|ERRORs->sprintf"ERROR(%s)"s|MARKERs->sletto_string(tok,st,ed)=letloc=Ast.Loc.of_lexpossstedinsprintf"%s[%s]"(rawtoken_to_stringtok)(Ast.Loc.to_stringloc)letto_rawtoken=PB.token_to_rawtokenletto_lexposs=PB.token_to_lexpossletdecompose=PB.decompose_tokenletcreate=PB.make_tokenletto_origt=rawtoken_to_orig(to_rawtokent)