// Path: src/pers/xia/jpython/tokenizer/TokState.java
// public enum TokState
// {
//     ENDMARKER,
//     NAME,
//     NUMBER,
//     STRING,
//     NEWLINE,
//     INDENT,
//     DEDENT,
//     LPAR,   // (
//     RPAR,   // )
//     LSQB,   // [
//     RSQB,   // ]
//     COLON,  // :
//     COMMA,  // ,
//     SEMI,   // ;
//     PLUS,   // +
//     MINUS,  // -
//     STAR,   // *
//     SLASH,  // /
//     VBAR,   // |
//     AMPER,  // &
//     LESS,   // <
//     GREATER,    // >
//     EQUAL,  // =
//     DOT,    // .
//     PERCENT,    // %
//     BACKQUOTE,    
//     LBRACE, // {
//     RBRACE, // }
//     EQEQUAL,    // ==
//     NOTEQUAL,   // !=
//     LESSEQUAL,  // <=
//     GREATEREQUAL,   // >=
//     TILDE,  // ~
//     CIRCUMFLEX, // ^
//     LEFTSHIFT,  // <<
//     RIGHTSHIFT, // >>
//     DOUBLESTAR, // **
//     PLUSEQUAL,  // +=
//     MINEQUAL,   // -=
//     STAREQUAL,  // *=
//     SLASHEQUAL, // /=
//     PERCENTEQUAL,   // %=
//     AMPEREQUAL, // &=
//     VBAREQUAL,  // |=
//     CIRCUMFLEXEQUAL,    // ^=
//     LEFTSHIFTEQUAL, // <<=
//     RIGHTSHIFTEQUAL,    // >>=
//     DOUBLESTAREQUAL,    // **=
//     DOUBLESLASH,    // \\
//     DOUBLESLASHEQUAL,   // \\=
//     AT, // @
//     ATEQUAL,    // @=
//     RARROW, // ->
//     ELLIPSIS,   // ...
//     OP,    
//     AWAIT,  // await
//     ASYNC,  // async
//     ERRORTOKEN,
//     N_TOKENS,
// }


import pers.xia.jpython.tokenizer.TokState;

package pers.xia.jpython.grammar.pgen;


/* 
 * 用于Pgen生成数据
 * Label类的替代。由于DFAName和DFA一开始没有定义，所以无法直接使用
 * 原来的Lable，故后面的操作会用这个_Label来代替。 
 */
class _Label
{
    String nextDfa;    //下一个DFA对象

    TokState tokState;
    String str;

    boolean isTerminal;

    public _Label(String nextDfa)
    {
        this.nextDfa = nextDfa;
        this.isTerminal = false;
    }

    public _Label(TokState tokState, String str)
    {
        this.tokState = tokState;
        this.str = str;
        this.isTerminal = true;
    }
    
    public boolean cmp(_Label label)
    {

// Path: src/pers/xia/jpython/tokenizer/TokState.java
// public enum TokState
// {
//     ENDMARKER,
//     NAME,
//     NUMBER,
//     STRING,
//     NEWLINE,
//     INDENT,
//     DEDENT,
//     LPAR,   // (
//     RPAR,   // )
//     LSQB,   // [
//     RSQB,   // ]
//     COLON,  // :
//     COMMA,  // ,
//     SEMI,   // ;
//     PLUS,   // +
//     MINUS,  // -
//     STAR,   // *
//     SLASH,  // /
//     VBAR,   // |
//     AMPER,  // &
//     LESS,   // <
//     GREATER,    // >
//     EQUAL,  // =
//     DOT,    // .
//     PERCENT,    // %
//     BACKQUOTE,    
//     LBRACE, // {
//     RBRACE, // }
//     EQEQUAL,    // ==
//     NOTEQUAL,   // !=
//     LESSEQUAL,  // <=
//     GREATEREQUAL,   // >=
//     TILDE,  // ~
//     CIRCUMFLEX, // ^
//     LEFTSHIFT,  // <<
//     RIGHTSHIFT, // >>
//     DOUBLESTAR, // **
//     PLUSEQUAL,  // +=
//     MINEQUAL,   // -=
//     STAREQUAL,  // *=
//     SLASHEQUAL, // /=
//     PERCENTEQUAL,   // %=
//     AMPEREQUAL, // &=
//     VBAREQUAL,  // |=
//     CIRCUMFLEXEQUAL,    // ^=
//     LEFTSHIFTEQUAL, // <<=
//     RIGHTSHIFTEQUAL,    // >>=
//     DOUBLESTAREQUAL,    // **=
//     DOUBLESLASH,    // \\
//     DOUBLESLASHEQUAL,   // \\=
//     AT, // @
//     ATEQUAL,    // @=
//     RARROW, // ->
//     ELLIPSIS,   // ...
//     OP,    
//     AWAIT,  // await
//     ASYNC,  // async
//     ERRORTOKEN,
//     N_TOKENS,
// }


// Path: src/pers/xia/jpython/grammar/pgen/_Label.java
import pers.xia.jpython.tokenizer.TokState;

package pers.xia.jpython.grammar.pgen;


/* 
 * 用于Pgen生成数据
 * Label类的替代。由于DFAName和DFA一开始没有定义，所以无法直接使用
 * 原来的Lable，故后面的操作会用这个_Label来代替。 
 */
class _Label
{
    String nextDfa;    //下一个DFA对象

    TokState tokState;
    String str;

    boolean isTerminal;

    public _Label(String nextDfa)
    {
        this.nextDfa = nextDfa;
        this.isTerminal = false;
    }

    public _Label(TokState tokState, String str)
    {
        this.tokState = tokState;
        this.str = str;
        this.isTerminal = true;
    }
    
    public boolean cmp(_Label label)
    {

        if(this.isTerminal != label.isTerminal) return false;
