Exemplo n.º 1
0
 public override void CaseATempCastExp(ATempCastExp node)
 {
     //The cast type must be a single identifier
     if (node.GetType() is ALvalueExp)
     {
         ALvalueExp lvalueExp = (ALvalueExp)node.GetType();
         if (lvalueExp.GetLvalue() is AAmbiguousNameLvalue)
         {
             AAmbiguousNameLvalue ambiguousLvalue = (AAmbiguousNameLvalue) lvalueExp.GetLvalue();
             if (ambiguousLvalue.GetAmbiguous() is AAName)
             {
                 AAName simpleName = (AAName) ambiguousLvalue.GetAmbiguous();
                 if (simpleName.GetIdentifier().Count == 1)
                 {
                     ACastExp castExp = new ACastExp(node.GetToken(), new ANamedType(simpleName), node.GetExp());
                     node.ReplaceBy(castExp);
                     castExp.Apply(this);
                     return;
                 }
             }
         }
     }
     errors.Add(new ErrorCollection.Error(node.GetToken(), currentSourceFile, LocRM.GetString("ErrorText202")));
 }
        public override void CaseATempCastExp(ATempCastExp node)
        {
            //The cast type must be a single identifier
            if (node.GetType() is ALvalueExp)
            {
                ALvalueExp lvalueExp = (ALvalueExp)node.GetType();
                if (lvalueExp.GetLvalue() is AAmbiguousNameLvalue)
                {
                    AAmbiguousNameLvalue ambiguousLvalue = (AAmbiguousNameLvalue)lvalueExp.GetLvalue();
                    if (ambiguousLvalue.GetAmbiguous() is AAName)
                    {
                        AAName simpleName = (AAName)ambiguousLvalue.GetAmbiguous();
                        if (simpleName.GetIdentifier().Count == 1)
                        {
                            ACastExp castExp = new ACastExp(node.GetToken(), new ANamedType(simpleName), node.GetExp());
                            node.ReplaceBy(castExp);
                            castExp.Apply(this);
                            return;
                        }

                    }
                }
            }
            PExp exp = node.GetExp();
            node.ReplaceBy(exp);
            exp.Apply(this);
        }