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); } }
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; }
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)); }