casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Static Public Member Functions | Static Public Attributes | Static Private Member Functions | Static Private Attributes | List of all members
casacore::RecordGram Class Reference

Select-class for flex/bison scanner/parser for RecordGram. More...

#include <RecordGram.h>

Public Types

enum  Token {
  Node,
  Val,
  Elem,
  Set
}
 Define the types of tokens in the grammar. More...
 

Static Public Member Functions

static TableExprNode parse (const RecordInterface &record, const String &expression)
 Convert an expression string to an expression tree. More...
 
static TableExprNode parse (const Table &table, const String &expression)
 Convert an expression string to an expression tree. More...
 
static Bool expr2Bool (const String &expr, const Record &vars=Record())
 Evaluate an expression to the given type. More...
 
static Int64 expr2Int (const String &expr, const Record &vars=Record())
 
static double expr2Double (const String &expr, const Record &vars=Record(), const String &unit=String())
 
static DComplex expr2Complex (const String &expr, const Record &vars=Record())
 
static String expr2String (const String &expr, const Record &vars=Record())
 
static MVTime expr2Date (const String &expr, const Record &vars=Record())
 
static Array< Boolexpr2ArrayBool (const String &expr, const Record &vars=Record())
 
static Array< Int64expr2ArrayInt (const String &expr, const Record &vars=Record())
 
static Array< double > expr2ArrayDouble (const String &expr, const Record &vars=Record(), const String &unit=String())
 
static Array< DComplex > expr2ArrayComplex (const String &expr, const Record &vars=Record())
 
static Array< Stringexpr2ArrayString (const String &expr, const Record &vars=Record())
 
static Array< MVTimeexpr2ArrayDate (const String &expr, const Record &vars=Record())
 
static TableExprNode handleLiteral (RecordGramVal *)
 Create a TableExprNode from a literal. More...
 
static TableExprNode handleField (const String &name)
 Find the field name and create a TableExprNode from it. More...
 
static TableExprNode handleFunc (const String &name, const TableExprNodeSet &arguments)
 Handle a function. More...
 
static TableExprNode handleRegex (const TableExprNode &left, const String &regex)
 Handle a regex. More...
 
static void setNodePtr (TableExprNode *nodePtr)
 Set the final node pointer. More...
 
static void addToken (TableExprNode *ptr)
 Add a token to the list of tokens to be deleted for the possible tokens in the RecordGram.yy union. More...
 
static void addToken (RecordGramVal *ptr)
 
static void addToken (TableExprNodeSet *ptr)
 
static void addToken (TableExprNodeSetElem *ptr)
 
static void deleteToken (TableExprNode *ptr)
 Delete a token and remove from the list. More...
 
static void deleteToken (RecordGramVal *ptr)
 
static void deleteToken (TableExprNodeSet *ptr)
 
static void deleteToken (TableExprNodeSetElem *ptr)
 

Static Public Attributes

static TaQLStyle theirTaQLStyle
 Define the global TaQLStyle to use. More...
 

Static Private Member Functions

static void deleteTokenStorage ()
 Delete all tokens not deleted yet. More...
 
static TableExprNode doParse (const String &expression)
 Do the conversion of an expression string to an expression tree. More...
 
static void addToken (void *ptr, Token type)
 Add a token to the list of tokens to be deleted. More...
 
static void removeToken (void *ptr)
 Remove a token from the list of tokens to be deleted. More...
 

Static Private Attributes

static std::map< void *, TokentheirTokens
 
static const RecordInterfacetheirRecPtr
 
static const TabletheirTabPtr
 
static TableExprNodetheirNodePtr
 
static std::mutex theirMutex
 

Detailed Description

Select-class for flex/bison scanner/parser for RecordGram.

Intended use:

Internal

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25

Prerequisite

Synopsis

This class is needed for the the actions in the flex scanner and bison parser. This stores the information by constructing RecordGram objects as needed and storing them in a List.

An expression can be given as a string and parsed by the parse function. The grammar used is as much as possible the same as that for the WHERE clause in TaQL (see Note 199). It is possible to set the TaQL style to use by setting theirTaQLStyle before calling the parse functions. A better way is to define the style with the 'USING STYLE' part of the command (similar to TaQL).

Motivation

It is necessary to be able to give a record select command in ASCII. It is used by the ACSIS people.

Definition at line 175 of file RecordGram.h.

Member Enumeration Documentation

Define the types of tokens in the grammar.

Enumerator
Node 
Val 
Elem 
Set 

Definition at line 179 of file RecordGram.h.

Member Function Documentation

static void casacore::RecordGram::addToken ( TableExprNode ptr)
static

Add a token to the list of tokens to be deleted for the possible tokens in the RecordGram.yy union.

The addToken() functions are to be called only by the yy parser (under theirMutex).

static void casacore::RecordGram::addToken ( RecordGramVal ptr)
static
static void casacore::RecordGram::addToken ( TableExprNodeSet ptr)
static
static void casacore::RecordGram::addToken ( TableExprNodeSetElem ptr)
static
static void casacore::RecordGram::addToken ( void *  ptr,
Token  type 
)
inlinestaticprivate

Add a token to the list of tokens to be deleted.

Definition at line 273 of file RecordGram.h.

References theirTokens.

static void casacore::RecordGram::deleteToken ( TableExprNode ptr)
static

Delete a token and remove from the list.

The deleteToken() functions are to be called only by the yy parser (under theirMutex).

static void casacore::RecordGram::deleteToken ( RecordGramVal ptr)
static
static void casacore::RecordGram::deleteToken ( TableExprNodeSet ptr)
static
static void casacore::RecordGram::deleteToken ( TableExprNodeSetElem ptr)
static
static void casacore::RecordGram::deleteTokenStorage ( )
staticprivate

Delete all tokens not deleted yet.

static TableExprNode casacore::RecordGram::doParse ( const String expression)
staticprivate

Do the conversion of an expression string to an expression tree.

static Array<Bool> casacore::RecordGram::expr2ArrayBool ( const String expr,
const Record vars = Record() 
)
static
static Array<DComplex> casacore::RecordGram::expr2ArrayComplex ( const String expr,
const Record vars = Record() 
)
static
static Array<MVTime> casacore::RecordGram::expr2ArrayDate ( const String expr,
const Record vars = Record() 
)
static
static Array<double> casacore::RecordGram::expr2ArrayDouble ( const String expr,
const Record vars = Record(),
const String unit = String() 
)
static
static Array<Int64> casacore::RecordGram::expr2ArrayInt ( const String expr,
const Record vars = Record() 
)
static
static Array<String> casacore::RecordGram::expr2ArrayString ( const String expr,
const Record vars = Record() 
)
static
static Bool casacore::RecordGram::expr2Bool ( const String expr,
const Record vars = Record() 
)
static

Evaluate an expression to the given type.

The expression can contain variables; their names and values must be defined in the record. For double values it is possible to specify the desired unit. If the expression is a scalar value, the expr2Array functions will return an array with length 1.

static DComplex casacore::RecordGram::expr2Complex ( const String expr,
const Record vars = Record() 
)
static
static MVTime casacore::RecordGram::expr2Date ( const String expr,
const Record vars = Record() 
)
static
static double casacore::RecordGram::expr2Double ( const String expr,
const Record vars = Record(),
const String unit = String() 
)
static
static Int64 casacore::RecordGram::expr2Int ( const String expr,
const Record vars = Record() 
)
static
static String casacore::RecordGram::expr2String ( const String expr,
const Record vars = Record() 
)
static
static TableExprNode casacore::RecordGram::handleField ( const String name)
static

Find the field name and create a TableExprNode from it.

To be called only by the yy parser (under theirMutex).

static TableExprNode casacore::RecordGram::handleFunc ( const String name,
const TableExprNodeSet arguments 
)
static

Handle a function.

To be called only by the yy parser (under theirMutex).

static TableExprNode casacore::RecordGram::handleLiteral ( RecordGramVal )
static

Create a TableExprNode from a literal.

static TableExprNode casacore::RecordGram::handleRegex ( const TableExprNode left,
const String regex 
)
static

Handle a regex.

static TableExprNode casacore::RecordGram::parse ( const RecordInterface record,
const String expression 
)
static

Convert an expression string to an expression tree.

The expression will operate on a series of Record objects. The given record is needed to know the type of the fields used in the expression.

static TableExprNode casacore::RecordGram::parse ( const Table table,
const String expression 
)
static

Convert an expression string to an expression tree.

The expression will operate on the given table.

static void casacore::RecordGram::removeToken ( void *  ptr)
inlinestaticprivate

Remove a token from the list of tokens to be deleted.

Definition at line 276 of file RecordGram.h.

References theirTokens.

static void casacore::RecordGram::setNodePtr ( TableExprNode nodePtr)
inlinestatic

Set the final node pointer.

Definition at line 243 of file RecordGram.h.

References theirNodePtr.

Member Data Documentation

std::mutex casacore::RecordGram::theirMutex
staticprivate

Definition at line 283 of file RecordGram.h.

TableExprNode* casacore::RecordGram::theirNodePtr
staticprivate

Definition at line 282 of file RecordGram.h.

Referenced by setNodePtr().

const RecordInterface* casacore::RecordGram::theirRecPtr
staticprivate

Definition at line 280 of file RecordGram.h.

const Table* casacore::RecordGram::theirTabPtr
staticprivate

Definition at line 281 of file RecordGram.h.

TaQLStyle casacore::RecordGram::theirTaQLStyle
static

Define the global TaQLStyle to use.

By default it is glish style.

Definition at line 248 of file RecordGram.h.

std::map<void*, Token> casacore::RecordGram::theirTokens
staticprivate

Definition at line 279 of file RecordGram.h.

Referenced by addToken(), and removeToken().


The documentation for this class was generated from the following file: