Exp parseLiteral() { LiteralExp literalex = new LiteralExp(); literalex.LiteralToken = CurrentToken; MoveNext(); return(literalex); }
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); }