/// <summary> /// /////////////////////////////////////////////////////////// /// </summary> /// <param name="nNiveau"></param> /// <returns></returns> protected override IExpression GetExpression(int nNiveau) { if (nNiveau == 4) { IExpression expN; expN = GetExpression(nNiveau - 1); if (expN == null) { return(null); } int nOldPosPile = ContexteAnalyse.GetPosPile(); CTokenAnalyseSyntaxique token = ContexteAnalyse.PopToken(); if (token == null) { return(expN); } if (token.GetNiveauToken() == nNiveau && token is CTokenOperateur) { //Si on l'a , c'est bien CTokenOperateur tokOp = (CTokenOperateur)token; IExpression exp = AllocateurExpression.GetExpression(tokOp.Operateur.Id); exp.Parametres.Add(expN); CResultAErreur result = exp.VerifieParametres(); return(exp); } else // sinon, c'est pas grave { ContexteAnalyse.SetPosPile(nOldPosPile); } return(expN); } return(base.GetExpression(nNiveau)); }
/// ///////////////////////////////////////////////// protected override bool BaseNiveau(int nNiveau) { //Greffon pour le not if (nNiveau == 4) { PasseCaracteresControle(); IsOperateurNiveauN(nNiveau, false); //Not facultatif } if (nNiveau == 0) { //Si c'est null, pas de paramètres PasseCaracteresControle(); if (Identifie("null", 0)) { ContexteAnalyse.m_nPositionAnalyse += "null".Length; ContexteAnalyse.PushToken(new CTokenConstante(ContexteAnalyse.m_nPositionAnalyse, null)); return(true); } } return(base.BaseNiveau(nNiveau)); }