package Ġorg . elixir _ lang . beam . de compiler Ċ Ċ import Ġorg . elixir _ lang . Name Ar ity Ċ import Ġjava . lang . StringBuilder Ċ Ċ object ĠPrefix Operator Ġ: ĠDefault () Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġde compiler Ġaccepts Ġthe Ġ` macro Name Ar ity ` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġ[. append ] Ġshould Ġbe Ġcalled Ġwith ĊĠĠĠĠ Ġ* Ġ` macro Name Ar ity `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġaccept ( beam Language : ĠString , Ġname Ar ity : ĠName Ar ity ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ar ity . arity Ġ== Ġ 1 Ġ&& Ġis Prefix Operator ( name Ar ity . name ) ĊĊĠĠĠ Ġoverride Ġfun Ġparameters ( macro Name Ar ity : Ġorg . elixir _ lang . beam . Macro Name Ar ity ): ĠArray < String > Ġ= ĠarrayOf (" value ") ĊĊĠĠĠ Ġoverride Ġfun Ġappend Signature ( de compiled : ĠStringBuilder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmacro Name Ar ity : Ġorg . elixir _ lang . beam . Macro Name Ar ity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġde compiled . append (' (' ) ĊĠĠĠĠĠĠĠ Ġappend Name ( de compiled , Ġmacro Name Ar ity . name ) ĊĠĠĠĠĠĠĠ Ġde compiled . append ( parameters [ 0 ]). append (' )') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠPREFIX _ OPERATOR _ SET : ĠSet < String > Ġ= Ġset Of ("+ ", Ġ"- ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ par ma Ġname Ġ[ org . elixir _ lang . beam . Macro Name Ar ity . name ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Prefix Operator ( name : ĠString ): ĠBoolean Ġ= ĠPREFIX _ OPERATOR _ SET . contains ( name ) Ċ Ċ } Ċ