Esempio n. 1
0
 private PqlOutput ProcessResult(PqlResult result)
 {
     if (result is PqlBoolean)
     {
         return(new PqlBooleanOutput(resultBoolean));
     }
     else
     {
         PqlTupleOutput output = new PqlTupleOutput();
         if (resultBoolean)
         {
             PqlTuple tuple = result as PqlTuple;
             foreach (PqlElem elem in tuple.Elems)
             {
                 string synonym;
                 if (elem is PqlAttrRef)
                 {
                     synonym = (elem as PqlAttrRef).SynonymName;
                 }
                 else
                 {
                     synonym = (elem as PqlSynonym).Name;
                 }
                 PqlDeclaration declaration = Declarations.GetDeclarationBySynonym(synonym);
                 output.Declarations.AddDeclaration(declaration);
             }
         }
         return(output);
     }
 }
Esempio n. 2
0
 public PqlSelect(IDeclarationList declarations, PqlResult result, List <PqlWith> withClauses, List <PqlSuchThat> suchThatClauses, List <PqlPatternCond> patternClauses)
 {
     Declarations    = declarations;
     Result          = result;
     WithClauses     = withClauses;
     SuchThatClauses = suchThatClauses;
     PatternClauses  = patternClauses;
 }
Esempio n. 3
0
        private PqlSelect SelectCl()
        {
            IDeclarationList declarations = Declarations();

            Eat(PqlTokenType.SELECT);
            PqlResult result = ResultCl();

            List <PqlWith>        withClauses     = new List <PqlWith>();
            List <PqlSuchThat>    suchThatClauses = new List <PqlSuchThat>();
            List <PqlPatternCond> patternClauses  = new List <PqlPatternCond>();

            while (currentToken.Type == PqlTokenType.SUCH ||
                   currentToken.Type == PqlTokenType.WITH ||
                   currentToken.Type == PqlTokenType.PATTERN)
            {
                switch (currentToken.Type)
                {
                case PqlTokenType.SUCH:
                    suchThatClauses.Add(SuchThatCl());
                    break;

                case PqlTokenType.WITH:
                    withClauses.Add(WithCl());
                    break;

                case PqlTokenType.PATTERN:
                    patternClauses.Add(PatternCl());
                    break;

                default:
                    throw new Exception();
                }
            }

            return(new PqlSelect(declarations, result, withClauses, suchThatClauses, patternClauses));
        }