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); }