version 1.1.2.4, 2001/12/02 07:52:38
|
version 1.1.2.6, 2001/12/02 22:03:23
|
|
|
| |
%{ | %{ |
| |
|
#include <Pegasus/Common/Config.h> |
|
#include <Pegasus/WQL/WQLOperation.h> |
|
#include <Pegasus/WQL/WQLOperand.h> |
|
#include <Pegasus/WQL/WQLParserState.h> |
|
#include <Pegasus/WQL/WQLSelectStatement.h> |
#include <string.h> | #include <string.h> |
#include <stdlib.h> | #include <stdlib.h> |
| |
|
|
# include <alloca.h> | # include <alloca.h> |
#endif | #endif |
| |
#if 0 |
#if 1 |
# define WQL_TRACE(X) printf(X) |
# define WQL_TRACE(X) printf X |
#else | #else |
# define WQL_TRACE(X) | # define WQL_TRACE(X) |
#endif | #endif |
|
|
extern int WQL_lex(); | extern int WQL_lex(); |
extern int WQL_error(char*); | extern int WQL_error(char*); |
| |
|
PEGASUS_USING_PEGASUS; |
|
|
|
PEGASUS_NAMESPACE_BEGIN |
|
|
|
extern WQLParserState* globalParserState; |
|
|
|
PEGASUS_NAMESPACE_END |
|
|
%} | %} |
| |
/* | /* |
|
|
%token <intValue> TOK_WHERE | %token <intValue> TOK_WHERE |
%token <intValue> TOK_FROM | %token <intValue> TOK_FROM |
| |
%token <strValue> TOK_UNEXPECTED_CHAR |
%token <intValue> TOK_UNEXPECTED_CHAR |
| |
%type <nodeValue> propertyName |
%type <strValue> propertyName |
%type <nodeValue> propertyList | %type <nodeValue> propertyList |
%type <nodeValue> predicate | %type <nodeValue> predicate |
%type <nodeValue> comparisonPredicate | %type <nodeValue> comparisonPredicate |
|
|
selectList | selectList |
: '*' | : '*' |
{ | { |
|
globalParserState->statement->appendPropertyName("*"); |
} | } |
| propertyList | | propertyList |
{ | { |
|
|
propertyList | propertyList |
: propertyName | : propertyName |
{ | { |
|
globalParserState->statement->appendPropertyName($1); |
} | } |
| propertyList ',' propertyName | | propertyList ',' propertyName |
{ | { |
|
globalParserState->statement->appendPropertyName($3); |
} | } |
| |
selectExpression | selectExpression |
|
|
fromClause | fromClause |
: TOK_FROM className | : TOK_FROM className |
{ | { |
|
WQL_TRACE(("YACC: fromClause: TOK_FROM className(%s)\n", $2)); |
|
globalParserState->statement->setClassName($2); |
|
delete [] $2; |
} | } |
| |
whereClause | whereClause |
|
|
searchCondition | searchCondition |
: searchCondition TOK_OR searchCondition | : searchCondition TOK_OR searchCondition |
{ | { |
|
WQL_TRACE(("YACC: TOK_OR\n")); |
} | } |
| searchCondition TOK_AND searchCondition | | searchCondition TOK_AND searchCondition |
{ | { |
|
WQL_TRACE(("YACC: TOK_AND\n")); |
} | } |
| TOK_NOT searchCondition | | TOK_NOT searchCondition |
{ | { |
|
|
comparisonPredicate | comparisonPredicate |
: comparisonTerm TOK_LT comparisonTerm | : comparisonTerm TOK_LT comparisonTerm |
{ | { |
|
WQL_TRACE(("YACC: TOK_LT\n")); |
} | } |
| comparisonTerm TOK_GT comparisonTerm | | comparisonTerm TOK_GT comparisonTerm |
{ | { |
|
WQL_TRACE(("YACC: TOK_GT\n")); |
} | } |
| comparisonTerm TOK_LE comparisonTerm | | comparisonTerm TOK_LE comparisonTerm |
{ | { |
|
WQL_TRACE(("YACC: TOK_LE\n")); |
} | } |
| comparisonTerm TOK_GE comparisonTerm | | comparisonTerm TOK_GE comparisonTerm |
{ | { |
|
WQL_TRACE(("YACC: TOK_GE\n")); |
} | } |
| comparisonTerm TOK_EQ comparisonTerm | | comparisonTerm TOK_EQ comparisonTerm |
{ | { |
|
WQL_TRACE(("YACC: TOK_EQ\n")); |
} | } |
| comparisonTerm TOK_NE comparisonTerm | | comparisonTerm TOK_NE comparisonTerm |
{ | { |
|
WQL_TRACE(("YACC: TOK_NE\n")); |
} | } |
| |
nullPredicate | nullPredicate |
: comparisonTerm TOK_IS TOK_NULL | : comparisonTerm TOK_IS TOK_NULL |
{ | { |
|
WQL_TRACE(("YACC: TOK_IS TOK_NULL\n")); |
} | } |
| comparisonTerm TOK_IS TOK_NOT TOK_NULL | | comparisonTerm TOK_IS TOK_NOT TOK_NULL |
{ | { |
|
WQL_TRACE(("YACC: TOK_NOT TOK_NULL\n")); |
} | } |
| |
truthValue | truthValue |
|
|
propertyName | propertyName |
: TOK_IDENTIFIER | : TOK_IDENTIFIER |
{ | { |
|
WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", $1)); |
|
$$ = $1; |
} | } |
| |
className : TOK_IDENTIFIER | className : TOK_IDENTIFIER |
{ | { |
|
WQL_TRACE(("YACC: TOK_IDENTIFIER %s\n", $1)); |
|
$$ = $1; |
} | } |
| |
comparisonTerm | comparisonTerm |
|
|
} | } |
| truthValue | | truthValue |
{ | { |
|
|
} | } |
| |
%% | %% |
|
|
int WQL_error(char* errorMessage) |
|
{ |
|
fprintf(stderr, "WQL_error: %s\n", errorMessage); |
|
return -1; |
|
} |
|