[antlr-interest] Get code in constructor (Java target)

Gustaf Johansson gustaf.j at gmail.com
Thu Jul 23 02:19:50 PDT 2009


On Sat, Jul 11, 2009 at 7:11 AM, David-Sarah
Hopwood<david-sarah at jacaranda.org> wrote:
> Gustaf Johansson wrote:
>> Hello,
>>
>> I have a global hashmap that i want to initialize in the constructor.
>
> If you declare an instance field with an initializer, or use a
> 'static {...}' block, Java will effectively copy that initializer or
> block into all constructors.
>
> For example:
>
> @parser::members {
>  private Map<KeyType, ValueType> map = initMap();
> }

This works perfectly, thanks alot for the info.

>
> or
>
> @parser::members {
>  private Map<KeyType, ValueType> map;
>
>  static {
>    map = new HashMap<KeyType, ValueType>();
>    ...
>  }
> }

This does not work though, since the map is in a non-static context
and as such cant be accessed from a static context.

It would work to use a instance initializer block however (by skipping
the static keyword).

For example:

{
  map = new HashMap<KeyType, ValueType>();
  ...
}
>
> --
> David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>

Best Regards Gustaf


More information about the antlr-interest mailing list