示例#1
0
        Exp parseLiteral()
        {
            LiteralExp literalex = new LiteralExp();

            literalex.LiteralToken = CurrentToken;
            MoveNext();
            return(literalex);
        }
示例#2
0
        public Exp Parse(Token identToken, Exp srcExp)
        {
            sourceToken = identToken;
            i           = 0;
            code        = this.sourceToken.GetText();
            if (code.IndexOf('的') == -1 && code.IndexOf('第') == -1)
            {
                return(null);
            }
            Exp exp = parseIdentExp();

            while (i < code.Length /*&& code[i] == '的'*/)
            {
                char ch = code[i];
                if (ch == '的')
                {
                    i++;
                    DeExp expDe = new DeExp();
                    expDe.SubjectExp = exp;
                    Token token = parseToken();
                    expDe.MemberToken = token;
                    exp = expDe;
                }
                else if (ch == '第')
                {
                    i++;
                    DiExp expDi = new DiExp(srcExp);
                    expDi.SubjectExp = exp;
                    Token token = parseToken();
                    if (token != null)
                    {
                        if (TextUtil.IsInt(token.GetText()))
                        {
                            token.Kind = TokenKind.LiteralInt;
                            LiteralExp expLiteral = new LiteralExp();
                            expLiteral.LiteralToken = token;
                            expDi.ArgExp            = expLiteral;
                        }
                        else
                        {
                            token.Kind = TokenKind.Ident;
                            //IdentExp expIdent = new IdentExp();
                            //expIdent.IsFinally = true;
                            VarExp varExp = new VarExp(srcExp, token);
                            //varExp.VarToken = token;
                            expDi.ArgExp = varExp;
                        }
                    }
                    exp = expDi;
                }
                i++;
            }
            return(exp);
        }