package Ġorg . jetbrains . fortran . lang . preprocessor Ċ Ċ import Ġorg . jetbrains . fortran . lang . lexer . For tran Lexer Ċ import Ġorg . jetbrains . fortran . lang . psi . For tran Token Sets Ċ import Ġorg . jetbrains . fortran . lang . psi . For tran TokenType Ċ Ċ class ĠFor tran Macro ( val Ġname : ĠString , Ġval Ġvalue : ĠString ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠparseFrom Directive Content ( content : ĠCharSequence ): ĠFor tran Macro ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlexer Ġ= ĠFor tran Lexer ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlexer . start ( content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( For tran Token Sets . WHITE _ SP ACES . contains ( lexer . token Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlexer . advance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lexer . token Type Ġ== ĠFor tran TokenType . WORD ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmacro Ġ= Ġlexer . token Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlexer . advance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( For tran Token Sets . WHITE _ SP ACES . contains ( lexer . token Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlexer . advance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmar co _ value Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( lexer . token Type Ġ!= ĠFor tran TokenType . LINE _ CONTINUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmar co _ value Ġ+= Ġlexer . token Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlexer . advance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lexer . token Type Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFor tran Macro ( macro , Ġmar co _ value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }