コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }