Ejemplo n.º 1
0
        FnArg parseFnArg()
        {
            FnArg argt = new FnArg();

            if (CurrentKind == TokenKind.Ident)
            {
                argt.ArgTypeToken = CurrentToken;
                MoveNext();
                if (CurrentKind == TokenKind.Colon)
                {
                    MoveNext();
                    if (CurrentKind == TokenKind.Ident)
                    {
                        argt.ArgNameToken = CurrentToken;
                        MoveNext();
                        return(argt);
                    }
                    else
                    {
                        error("参数名称不正确");
                    }
                }
                else
                {
                    error("应该是':'");
                }
            }
            else
            {
                error("参数类型不正确");
                MoveNext();
            }
            return(null);
        }
Ejemplo n.º 2
0
        FnBracket parseFnMuArg()
        {
            FnBracket marg = new FnBracket();

            marg.LeftBracketToken = CurrentToken;
            MoveNext();
            while (!isBracketEnd(CurrentKind))
            {
                FnArg sarg = parseFnArg();
                if (sarg != null)
                {
                    marg.Args.Add(sarg);
                }
                if (CurrentKind == TokenKind.Comma)
                {
                    MoveNext();
                }
            }
            if (CurrentKind == TokenKind.RBS)
            {
                marg.RightBracketToken = CurrentToken;
                MoveNext();
            }
            else
            {
                error("括号不匹配");
            }
            return(marg);
        }