internal static CTFUnaryExpression Parse(TokParser tp) { CTFPrimaryExpression cpe = CTFPrimaryExpression.Parse(tp); if (cpe == null) { return(null); } CTFUnaryExpression cp = new CTFUnaryExpression(cpe); while (tp.Match(Token.EnumId.DOT)) { cp.element = cp.element + "." + tp.GetIden(); } if (tp.Match(Token.EnumId.OPENBRAC)) { CTFUnaryExpression cue = Parse(tp); if (cue == null) { throw new CTFException(); } tp.MustBe(Token.EnumId.CLOSEBRAC); cp.cue = cue; } return(cp); }
internal static CTFDeclarator Parse(TokParser tp) { if (tp.Token.Id != Token.EnumId.IDEN) { return(null); } CTFDeclarator cd = new CTFDeclarator(tp.Token.Buffer); tp.Next(); if (tp.Match(Token.EnumId.OPENBRAC)) { cd.Cue = CTFUnaryExpression.Parse(tp); tp.MustBe(Token.EnumId.CLOSEBRAC); } return(cd); }