internal static CTFITypeSpecifier Parse(CTFScope scope, TokParser tp)
        {
            if (!tp.Match(Token.EnumId.ENUM))
            {
                return(null);
            }

            tp.MustBe(Token.EnumId.COLON);

            List <CTFTypeSpecifier> cds = ParseList(scope, tp);

            tp.MustBe(Token.EnumId.LCURL);

            List <CTFEnumElem> list = new List <CTFEnumElem>();

            do
            {
                CTFEnumElem ce = CTFEnumElem.Parse(tp);
                list.Add(ce);
            }while (tp.Match(Token.EnumId.SEPARATOR));

            tp.MustBe(Token.EnumId.RCURL);

            return(new CTFEnumSpecifier(Token.EnumId.ENUM, cds, list));
        }
        internal static CTFEnumElem Parse(TokParser tp)
        {
            string name = tp.GetIden();

            tp.MustBe(Token.EnumId.ASSIGNMENT);
            CTFUnaryExpression first = CTFUnaryExpression.Parse(tp);
            CTFEnumElem        ce    = new CTFEnumElem(name, first.Calculate());

            if (tp.Match(Token.EnumId.ELIPSES))
            {
                ce.Second = CTFUnaryExpression.Parse(tp).Calculate();
            }

            return(ce);
        }