Exp parseCall() { //report("parseCall"); List <Exp> exps = new List <Exp>(); while (tape.Current.Kind == TokenKind.Ident || tape.Current.Kind == TokenKind.LBS || TokenKindHelper.IsLiteral(tape.Current.Kind))//|| CurrentKind == TokenKind.RBS { Exp term = parseChain(); exps.Add(term); } if (exps.Count == 2 && (exps[0] is ExpType) && (exps[1] is ExpBracket)) { ExpNew expNew = new ExpNew(); expNew.TypeExp = (exps[0] as ExpType); expNew.BracketExp = (exps[1] as ExpBracket); return(expNew); } else if (exps.Count == 0) { return(null); } else if (exps.Count == 1 && !(exps[0] is ExpProcNamePart)) { return(exps[0]); } else { ExpCall callExp = new ExpCall(); callExp.Elements = exps; return(callExp); } }
private ExpNew AnalyNewExp(ExpTypeUnsure expType, ExpBracket expBracket) { ExpNew expNew = new ExpNew(this.expContext, expType, expBracket); // expNew.SetContextExp(this.expContext); Exp expArg = expNew.Analy(); ParseAsArg(expArg); return(expNew); }
private Exp ParseToExpNew(ExpTypeBase expType, Exp exp2) { ExpBracket bracketBracket = WarpExp(exp2); if (bracketBracket.IsExpBracketTagNew()) { bracketBracket = bracketBracket.AnalyToTagNew(); } ExpNew newexp = new ExpNew(this.ExpContext, expType, bracketBracket); //newexp.SetContextExp(this.expContext); Exp exp3 = newexp.Analy(); return(exp3); }