(file) Return to WQL.y CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / WQL

Diff for /pegasus/src/Pegasus/WQL/WQL.y between version 1.1.2.2 and 1.4

version 1.1.2.2, 2001/12/01 18:38:16 version 1.4, 2003/02/12 17:18:39
Line 8 
Line 8 
  
 %{ %{
  
   #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>
  
Line 20 
Line 25 
 #endif #endif
  
 #if 0 #if 0
 # 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(const char*);
   
   //
   // Define the global parser state object:
   //
   
   PEGASUS_USING_PEGASUS;
   
   PEGASUS_NAMESPACE_BEGIN
   
   extern WQLParserState* globalParserState;
   
   PEGASUS_NAMESPACE_END
  
 %} %}
  
Line 59 
Line 76 
 %token <strValue> TOK_STRING %token <strValue> TOK_STRING
 %token <intValue> TOK_TRUE %token <intValue> TOK_TRUE
 %token <intValue> TOK_FALSE %token <intValue> TOK_FALSE
   %token <intValue> TOK_NULL
  
 %token <intValue> TOK_EQ %token <intValue> TOK_EQ
 %token <intValue> TOK_NE %token <intValue> TOK_NE
Line 70 
Line 88 
 %token <intValue> TOK_NOT %token <intValue> TOK_NOT
 %token <intValue> TOK_OR %token <intValue> TOK_OR
 %token <intValue> TOK_AND %token <intValue> TOK_AND
 %token <intValue> TOK_ISA  %token <intValue> TOK_IS
  
 %token <strValue> TOK_IDENTIFIER %token <strValue> TOK_IDENTIFIER
 %token <intValue> TOK_SELECT %token <intValue> TOK_SELECT
 %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> constant  %type <strValue> propertyName
 %type <nodeValue> property  
 %type <nodeValue> propertyListOrStar  
 %type <nodeValue> propertyList %type <nodeValue> propertyList
 %type <nodeValue> expressionTerm  %type <nodeValue> predicate
 %type <nodeValue> expression  %type <nodeValue> comparisonPredicate
   // %type <nodeValue> comparisonTerm
   %type <nodeValue> nullPredicate
   %type <nodeValue> searchCondition
   %type <nodeValue> fromClause
 %type <nodeValue> whereClause %type <nodeValue> whereClause
 %type <strValue> fromClass  
 %type <nodeValue> selectStatement %type <nodeValue> selectStatement
   %type <nodeValue> selectList
   %type <nodeValue> selectExpression
 %type <strValue> className %type <strValue> className
 %type <nodeValue> function  %type <intValue> truthValue
 %type <nodeValue> functionParameterList  
 %type <nodeValue> functionParameter  
  
 %left TOK_OR %left TOK_OR
 %left TOK_AND %left TOK_AND
Line 110 
Line 129 
 start start
     : selectStatement     : selectStatement
     {     {
         WQL_TRACE(("YACC: start: selectStatement\n"));          WQL_TRACE(("YACC: start\n"));
     }     }
  
 selectStatement selectStatement
     : TOK_SELECT propertyListOrStar fromClass      : TOK_SELECT selectList selectExpression
     {     {
         WQL_TRACE(("YACC: selectStatement\n"));  
     }  
     | TOK_SELECT propertyListOrStar fromClass whereClause  
     {  
         WQL_TRACE(("YACC: selectStatement\n"));  
     }  
  
 fromClass : TOK_FROM className  
     {  
         WQL_TRACE(("YACC: fromClass : TOK_FROM %s\n", $2));  
         $$ = $2;  
     }     }
  
 className : TOK_IDENTIFIER  selectList
       : '*'
     {     {
         WQL_TRACE(("YACC: className : %s\n", $1));          globalParserState->statement->setAllProperties(true);
         $$ = $1  
     }     }
       | propertyList
 whereClause : TOK_WHERE expression  
     {  
         WQL_TRACE(("YACC: whereClause : TOK_WHERE expression\n"));  
     }  
   
 propertyListOrStar  
     : propertyList  
     {     {
  
     }     }
     | '*'  
     {  
         WQL_TRACE(("YACC: propertyListOrStar: '*'\n"));  
     }  
  
 propertyList : property  propertyList
       : propertyName
     {     {
           globalParserState->statement->appendSelectPropertyName(CIMName($1));
     }     }
     | propertyList ',' property      | propertyList ',' propertyName
     {     {
           globalParserState->statement->appendSelectPropertyName(CIMName($3));
     }     }
  
 property  selectExpression
     : TOK_IDENTIFIER      : fromClause whereClause
     {     {
  
     }     }
     | TOK_IDENTIFIER '.' TOK_IDENTIFIER      | fromClause
     {     {
  
     }     }
  
 expression  fromClause
     : expression TOK_OR expression      : TOK_FROM className
     {     {
           WQL_TRACE(("YACC: fromClause: TOK_FROM className(%s)\n", $2));
           globalParserState->statement->setClassName(CIMName($2));
     }     }
     | expression TOK_AND expression  
     {  
  
     }  whereClause
     | TOK_NOT expression      : TOK_WHERE searchCondition
     {     {
  
     }     }
     | '(' expression ')'  
     {  
  
     }  searchCondition
     | expressionTerm      : searchCondition TOK_OR searchCondition
     {     {
           WQL_TRACE(("YACC: TOK_OR\n"));
           globalParserState->statement->appendOperation(WQL_OR);
     }     }
       | searchCondition TOK_AND searchCondition
 expressionTerm  
     : property TOK_LT constant  
     {     {
           WQL_TRACE(("YACC: TOK_AND\n"));
           globalParserState->statement->appendOperation(WQL_AND);
     }     }
     | property TOK_GT constant      | TOK_NOT searchCondition
     {     {
           WQL_TRACE(("YACC: TOK_NOT\n"));
  
           globalParserState->statement->appendOperation(WQL_NOT);
     }     }
     | property TOK_LE constant      | '(' searchCondition ')'
     {     {
  
     }     }
     | property TOK_GE constant      | predicate
     {     {
  
     }     }
     | property TOK_EQ constant      | predicate TOK_IS truthValue
     {     {
           WQLOperation op = $3 ? WQL_IS_TRUE : WQL_IS_FALSE;
           globalParserState->statement->appendOperation(op);
     }     }
     | property TOK_NE constant      | predicate TOK_IS TOK_NOT truthValue
     {     {
           WQLOperation op = $4 ? WQL_IS_NOT_TRUE : WQL_IS_NOT_FALSE;
           globalParserState->statement->appendOperation(op);
     }     }
     | constant TOK_LT property  
     {  
  
     }  /******************************************************************************/
     | constant TOK_GT property  
     {  
  
     }  predicate
     | constant TOK_LE property      : comparisonPredicate
     {     {
  
     }     }
     | constant TOK_GE property      | nullPredicate
     {     {
  
     }     }
     | constant TOK_EQ property  
     {  
  
     }  comparisonPredicate
     | constant TOK_NE property      : comparisonTerm TOK_LT comparisonTerm
     {     {
           WQL_TRACE(("YACC: TOK_LT\n"));
           globalParserState->statement->appendOperation(WQL_LT);
     }     }
     | function TOK_LT constant      | comparisonTerm TOK_GT comparisonTerm
     {     {
           WQL_TRACE(("YACC: TOK_GT\n"));
           globalParserState->statement->appendOperation(WQL_GT);
     }     }
     | function TOK_GT constant      | comparisonTerm TOK_LE comparisonTerm
     {     {
           WQL_TRACE(("YACC: TOK_LE\n"));
           globalParserState->statement->appendOperation(WQL_LE);
     }     }
     | function TOK_LE constant      | comparisonTerm TOK_GE comparisonTerm
     {     {
           WQL_TRACE(("YACC: TOK_GE\n"));
           globalParserState->statement->appendOperation(WQL_GE);
     }     }
     | function TOK_GE constant      | comparisonTerm TOK_EQ comparisonTerm
     {     {
           WQL_TRACE(("YACC: TOK_EQ\n"));
           globalParserState->statement->appendOperation(WQL_EQ);
     }     }
     | function TOK_EQ constant      | comparisonTerm TOK_NE comparisonTerm
     {     {
           WQL_TRACE(("YACC: TOK_NE\n"));
           globalParserState->statement->appendOperation(WQL_NE);
     }     }
     | function TOK_NE constant  
     {  
  
     }  nullPredicate
     | constant TOK_LT function      : comparisonTerm TOK_IS TOK_NULL
     {     {
           WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NULL\n"));
           globalParserState->statement->appendOperation(WQL_IS_NULL);
     }     }
     | constant TOK_GT function      | comparisonTerm TOK_IS TOK_NOT TOK_NULL
     {     {
           WQL_TRACE(("YACC: nullPredicate : comparisonTerm IS NOT NULL\n"));
           globalParserState->statement->appendOperation(WQL_IS_NOT_NULL);
     }     }
     | constant TOK_LE function  
     {  
  
     }  truthValue
     | constant TOK_GE function      : TOK_TRUE
     {     {
           $$ = 1;
     }     }
     | constant TOK_EQ function      | TOK_FALSE
     {     {
           $$ = 0;
     }     }
     | constant TOK_NE function  
     {  
  
     }  propertyName
     | className TOK_ISA className      : TOK_IDENTIFIER
     {     {
           WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", $1));
           $$ = $1;
     }     }
  
 function  className : TOK_IDENTIFIER
     : TOK_IDENTIFIER '(' ')'  
     {  
   
     }  
     | TOK_IDENTIFIER '(' functionParameterList ')'  
     {     {
           WQL_TRACE(("YACC: TOK_IDENTIFIER %s\n", $1));
           $$ = $1;
     }     }
  
 functionParameterList  comparisonTerm
     : functionParameter      : propertyName
     {     {
           globalParserState->statement->appendOperand(
               WQLOperand($1, WQL_PROPERTY_NAME_TAG));
           globalParserState->statement->appendWherePropertyName(CIMName($1));
     }     }
     | functionParameterList ',' functionParameter      | TOK_INTEGER
     {  
   
     }  
   
 functionParameter  
     : property  
     | constant  
     | function  
     ;  
   
 constant  
     : TOK_INTEGER  
     {     {
           globalParserState->statement->appendOperand(
               WQLOperand($1, WQL_INTEGER_VALUE_TAG));
     }     }
     | TOK_DOUBLE     | TOK_DOUBLE
     {     {
           globalParserState->statement->appendOperand(
               WQLOperand($1, WQL_DOUBLE_VALUE_TAG));
     }     }
     | TOK_STRING     | TOK_STRING
     {     {
         WQL_TRACE(("YACC: TOK_STRING: %s\n", $1));          globalParserState->statement->appendOperand(
         $$ = $1;              WQLOperand($1, WQL_STRING_VALUE_TAG));
     }     }
       | truthValue
 %%  
   
 int WQL_error(char* errorMessage)  
 { {
     fprintf(stderr, "WQL_error: %s\n", errorMessage);          globalParserState->statement->appendOperand(
     return -1;              WQLOperand($1 != 0, WQL_BOOLEAN_VALUE_TAG));
 } }
   
   %%


Legend:
Removed from v.1.1.2.2  
changed lines
  Added in v.1.4

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2