Exemple #1
0
        void Expr(out Expression e)
        {
            Expression rhs; e = null;

            if (StartOf(2))
            {
                LogOrExp(out e);
                if (la.kind == 19)
                {
                    Get();
                    Expr(out rhs);
                    e = new Assignment(e.MakeLvalue(), rhs);
                }
            }
            else if (la.kind == 20)
            {
                Get();
                Expr(out e);
                e = new UnOp(Operator.WriteI, e);
            }
            else
            {
                SynErr(37);
            }
        }
Exemple #2
0
        void UnaryExp(out Expression e)
        {
            Expression e1; e = null;

            switch (la.kind)
            {
            case 1:
            case 2:
            case 3: {
                PostFixExp(out e);
                break;
            }

            case 29: {
                Get();
                UnaryExp(out e);
                break;
            }

            case 30: {
                Get();
                UnaryExp(out e1);
                e = new UnOp(Operator.Neg, e1);
                break;
            }

            case 32: {
                Get();
                UnaryExp(out e1);
                e = new UnOp(Operator.Not, e1);
                break;
            }

            case 18: {
                Get();
                UnaryExp(out e1);
                e = new DereferenceAccess(e1);
                break;
            }

            case 33: {
                Get();
                UnaryExp(out e1);
                e = new AddressOf(e1.MakeLvalue());
                break;
            }

            default: SynErr(39); break;
            }
        }