module gamma.grammar.Terminal;

import gamma.grammar.Symbol;
import gamma.util.Indexed;

public class Terminal : Symbol, Indexed
{
    private const size_t index_;

    public this(string representation, size_t index)
    {
        super(representation);
        this.index_ = index;
    }

    public override string toString() const
    {
        import std.format : format;
        import std.range : only;

        return format!"%(%s%)"(only(super.toString));
    }

    public size_t index() const
    {
        return this.index_;
    }
}