Esempio n. 1
0
        void Primary(out OqlExpression expression)
        {
            OqlExpression result = null;
            OqlExpression child;

            if (la.kind == 1)
            {
                Get();
                result = new IdentifierExpression(t.val, t.line, t.col);
                if (la.kind == 20)
                {
                    if (IsOidIdentifier(result))
                    {
                        Expect(20);
                        Expect(3);
                        result.UnaryOp = "";
                        result.Add(new IndexExpression(int.Parse(t.val), t.line, t.col));

                        Expect(21);
                    }
                    else
                    {
                        Get();
                        ParameterList(out child);
                        result         = new FunctionExpression(result.Value, t.line, t.col);
                        result.UnaryOp = "";
                        result.Add(child);

                        Expect(21);
                    }
                }
            }
            else if (StartOf(5))
            {
                Literal(out result);
            }
            else if (la.kind == 16)
            {
                Get();
                result = new ParameterExpression(t.val, t.line, t.col);
            }
            else if (la.kind == 20)
            {
                Get();
                RootExpr(out result);
                result.HasBrackets = true;
                Expect(21);
            }
            else
            {
                SynErr(44);
            }
            expression = result.Simplify();
        }