/*
 * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
 * Use of this file is governed by the BSD 3-clause license that
 * can be found in the LICENSE.txt file in the project root.
 */

package org.antlr.v4.tool;

import org.antlr.runtime.Token;

Track the names of attributes defined in arg lists, return values, scope blocks etc...
/** Track the names of attributes defined in arg lists, return values, * scope blocks etc... */
public class Attribute {
The entire declaration such as "String foo" or "x:int"
/** The entire declaration such as "String foo" or "x:int" */
public String decl;
The type; might be empty such as for Python which has no static typing
/** The type; might be empty such as for Python which has no static typing */
public String type;
The name of the attribute "foo"
/** The name of the attribute "foo" */
public String name;
A Token giving the position of the name of this attribute in the grammar.
/** A {@link Token} giving the position of the name of this attribute in the grammar. */
public Token token;
The optional attribute initialization expression
/** The optional attribute initialization expression */
public String initValue;
Who contains us?
/** Who contains us? */
public AttributeDict dict; public Attribute() {} public Attribute(String name) { this(name,null); } public Attribute(String name, String decl) { this.name = name; this.decl = decl; } @Override public String toString() { if ( initValue!=null ) { return name+":"+type+"="+initValue; } if ( type!=null ) { return name+":"+type; } return name; } }