src/utils/raSqlQuery/rql.h 1.3
1.3 2009/12/02 19:11:55 kent
Librarifying RQL parser and interpreter.
Index: src/utils/raSqlQuery/rql.h
===================================================================
RCS file: src/utils/raSqlQuery/rql.h
diff -N src/utils/raSqlQuery/rql.h
--- src/utils/raSqlQuery/rql.h 22 Nov 2009 02:54:37 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,99 +0,0 @@
-
-enum rqlOp
- {
- rqlOpUnknown, /* Should not occur */
- rqlOpLiteral, /* Literal string or number. */
- rqlOpSymbol, /* A symbol name. */
- rqlOpEq, /* An equals comparison */
- rqlOpNe, /* A not equals comparison */
-
- rqlOpStringToBoolean,
- rqlOpIntToBoolean,
- rqlOpDoubleToBoolean,
- rqlOpStringToInt,
- rqlOpStringToDouble,
- rqlOpBooleanToInt,
- rqlOpBooleanToDouble,
- rqlOpIntToDouble,
-
- rqlOpUnaryMinusDouble,
-
- rqlOpGt, /* Greater than comparison. */
- rqlOpLt, /* Less than comparison. */
- rqlOpGe, /* Greater than or equals comparison. */
- rqlOpLe, /* Less than or equals comparison. */
- rqlOpLike, /* SQL wildcard compare. */
-
- rqlOpAnd, /* An and */
- rqlOpOr, /* An or */
- rqlOpNot, /* A unary not. */
- };
-
-char *rqlOpToString(enum rqlOp op);
-/* Return string representation of parse op. */
-
-enum rqlType
-/* A type */
- {
- rqlTypeBoolean = 1,
- rqlTypeString = 2,
- rqlTypeInt = 3,
- rqlTypeDouble = 4,
- };
-
-union rqlVal
-/* Some value of arbirary type that can be of any type corresponding to rqlType */
- {
- boolean b;
- char *s;
- int i;
- double x;
- };
-
-struct rqlEval
-/* Result of evaluation of parse tree. */
- {
- enum rqlType type;
- union rqlVal val;
- };
-
-struct rqlParse
-/* A rql parse-tree. */
- {
- struct rqlParse *next; /* Points to younger sibling if any. */
- struct rqlParse *children; /* Points to oldest child if any. */
- enum rqlOp op; /* Operation at this node. */
- enum rqlType type; /* Return type of this operation. */
- union rqlVal val; /* Return value of this operation. */
- };
-
-struct rqlStatement
-/* A parsed out RQL statement */
- {
- char *next; /* Next in list */
- char *command; /* Generally the first word in the statement. */
- struct slName *fieldList; /* List of fields if any. */
- struct slName *tableList; /* List of tables if any. */
- struct rqlParse *whereClause; /* Where clause if any - tokenized. */
- };
-
-void rqlValDump(union rqlVal val, enum rqlType type, FILE *f);
-/* Dump out value to file. */
-
-void rqlParseDump(struct rqlParse *p, int depth, FILE *f);
-/* Dump out rqlParse tree and children. */
-
-struct rqlParse *rqlParseExpression(struct tokenizer *tkz);
-/* Parse out a clause, usually a where clause. */
-
-struct rqlStatement *rqlStatementParse(struct lineFile *lf);
-/* Parse an RQL statement out of text */
-
-void rqlStatementDump(struct rqlStatement *rql, FILE *f);
-/* Print out statement to file. */
-
-struct rqlEval rqlEvalOnRecord(struct rqlParse *p, struct raRecord *ra);
-/* Evaluate self on ra. */
-
-struct rqlEval rqlEvalCoerceToBoolean(struct rqlEval r);
-/* Return TRUE if it's a nonempty string or a non-zero number. */