package Ġorg . jetbrains . fortran . lang . parser Ċ Ċ import Ġcom . intellij . lang . Psi Builder Ċ import Ġorg . jetbrains . fortran . lang . For tran Types . IDENTIFIER Ċ import Ġorg . jetbrains . fortran . lang . parser . For tran Parser Util . consume Token Ċ import Ġorg . jetbrains . fortran . lang . parser . For tran Parser Util . enter _ section _ Ċ import Ġorg . jetbrains . fortran . lang . parser . For tran Parser Util . exit _ section _ Ċ import Ġorg . jetbrains . fortran . lang . parser . For tran Parser Util . recursion _ guard _ Ċ import Ġorg . jetbrains . fortran . lang . psi . For tran Include Foreign Leaf Type Ċ import Ġorg . jetbrains . fortran . lang . psi . For tran TokenType . KEYWORD S Ċ import Ġorg . jetbrains . fortran . lang . psi . For tran TokenType . WORD Ċ Ċ class ĠIdentifier Parser Ġ: ĠFor tran Parser Util . Parser Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġparse ( builder : ĠPsi Builder , Ġlevel : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! recursion _ guard _( builder , Ġlevel , Ġ" Identifier ")) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġresult : ĠBoolean ĊĠĠĠĠĠĠĠ Ġval Ġmarker Ġ= Ġenter _ section _( builder ) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġconsume Token ( builder , ĠIDENT IFIER ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Type Ġ= Ġbuilder . token Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Type Ġ=== ĠWORD Ġ|| ĠKEY WORDS . contains ( token Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . remap Current Token ( For tran Parser Util . clone TT with Base ( token Type , ĠIDENT IFIER )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġconsume Token ( builder , ĠIDENT IFIER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġexit _ section _( builder , Ġmarker , Ġnull , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ