version 1.1.2.8, 2001/12/09 02:57:09
|
version 1.9, 2006/01/30 16:18:36
|
|
|
|
//%2006//////////////////////////////////////////////////////////////////////// |
|
// |
|
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
|
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. |
|
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; |
|
// IBM Corp.; EMC Corporation, The Open Group. |
|
// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; |
|
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
|
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
|
// EMC Corporation; VERITAS Software Corporation; The Open Group. |
|
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
|
// EMC Corporation; Symantec Corporation; The Open Group. |
|
// |
|
// Permission is hereby granted, free of charge, to any person obtaining a copy |
|
// of this software and associated documentation files (the "Software"), to |
|
// deal in the Software without restriction, including without limitation the |
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
|
// sell copies of the Software, and to permit persons to whom the Software is |
|
// furnished to do so, subject to the following conditions: |
|
// |
|
// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN |
|
// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED |
|
// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT |
|
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
|
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
|
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
// |
|
//============================================================================== |
/* | /* |
**============================================================================== | **============================================================================== |
** | ** |
|
|
#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: | // Define the global parser state object: |
|
|
%token <intValue> TOK_TRUE | %token <intValue> TOK_TRUE |
%token <intValue> TOK_FALSE | %token <intValue> TOK_FALSE |
%token <intValue> TOK_NULL | %token <intValue> TOK_NULL |
|
%token <intValue> TOK_ISA |
|
%token <intValue> TOK_DOT |
| |
%token <intValue> TOK_EQ | %token <intValue> TOK_EQ |
%token <intValue> TOK_NE | %token <intValue> TOK_NE |
|
|
selectList | selectList |
: '*' | : '*' |
{ | { |
globalParserState->statement->appendPropertyName("*"); |
globalParserState->statement->setAllProperties(true); |
} | } |
| propertyList | | propertyList |
{ | { |
|
|
propertyList | propertyList |
: propertyName | : propertyName |
{ | { |
globalParserState->statement->appendPropertyName($1); |
globalParserState->statement->appendSelectPropertyName(CIMName($1)); |
} | } |
| propertyList ',' propertyName | | propertyList ',' propertyName |
{ | { |
globalParserState->statement->appendPropertyName($3); |
globalParserState->statement->appendSelectPropertyName(CIMName($3)); |
} | } |
| |
selectExpression | selectExpression |
|
|
: TOK_FROM className | : TOK_FROM className |
{ | { |
WQL_TRACE(("YACC: fromClause: TOK_FROM className(%s)\n", $2)); | WQL_TRACE(("YACC: fromClause: TOK_FROM className(%s)\n", $2)); |
globalParserState->statement->setClassName($2); |
globalParserState->statement->setClassName(CIMName($2)); |
} | } |
| |
whereClause | whereClause |
|
|
WQL_TRACE(("YACC: TOK_NE\n")); | WQL_TRACE(("YACC: TOK_NE\n")); |
globalParserState->statement->appendOperation(WQL_NE); | globalParserState->statement->appendOperation(WQL_NE); |
} | } |
|
| propertyName TOK_ISA className |
|
{ |
|
WQL_TRACE(("YACC: TOK_ISA\n")); |
|
#ifndef PEGASUS_SNIA_EXTENSIONS |
|
// If SNIA tests, allow the ISA but do not pass className |
|
yyerror("ISA Token Not Supported"); |
|
#endif |
|
} |
| |
nullPredicate | nullPredicate |
: comparisonTerm TOK_IS TOK_NULL | : comparisonTerm TOK_IS TOK_NULL |
|
|
{ | { |
$$ = 0; | $$ = 0; |
} | } |
|
/************** |
propertyName | propertyName |
: TOK_IDENTIFIER | : TOK_IDENTIFIER |
{ | { |
WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", $1)); | WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", $1)); |
$$ = $1; | $$ = $1; |
} | } |
|
*****************/ |
|
propertyName |
|
: TOK_IDENTIFIER |
|
{ |
|
WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s)\n", $1)); |
|
$$ = $1; |
|
} |
|
| TOK_IDENTIFIER TOK_DOT TOK_IDENTIFIER |
|
{ |
|
WQL_TRACE(("YACC: propertyName : TOK_IDENTIFIER(%s.%s)\n", $1, $3)); |
|
#ifdef PEGASUS_SNIA_EXTENSIONS |
|
// Pass anything as a property name to fool parser for SNIA testing |
|
$$ = strdup("dummy"); |
|
#else |
|
yyerror("Scoped (dotted) property names not supported"); |
|
#endif |
|
} |
|
|
| |
className : TOK_IDENTIFIER | className : TOK_IDENTIFIER |
{ | { |
|
|
{ | { |
globalParserState->statement->appendOperand( | globalParserState->statement->appendOperand( |
WQLOperand($1, WQL_PROPERTY_NAME_TAG)); | WQLOperand($1, WQL_PROPERTY_NAME_TAG)); |
|
globalParserState->statement->appendWherePropertyName(CIMName($1)); |
} | } |
| TOK_INTEGER | | TOK_INTEGER |
{ | { |