8 #ifndef OPENDDS_DCPS_TOPIC_EXPRESSION_GRAMMAR_H 9 #define OPENDDS_DCPS_TOPIC_EXPRESSION_GRAMMAR_H 11 #ifndef OPENDDS_NO_MULTI_TOPIC 20 namespace TopicExpressionGrammar {
23 using namespace GrammarUtils;
26 struct SELECT :
Keyword<CharSeqIgnoreCase<'s', 'e', 'l', 'e', 'c', 't'> > {};
27 struct FROM :
Keyword<CharSeqIgnoreCase<'f', 'r', 'o', 'm'> > {};
28 struct WHERE :
Keyword<CharSeqIgnoreCase<'w', 'h', 'e', 'r', 'e'> > {};
29 struct INNER :
Keyword<CharSeqIgnoreCase<'i', 'n', 'n', 'e', 'r'> > {};
31 :
Keyword<CharSeqIgnoreCase<'n', 'a', 't', 'u', 'r', 'a', 'l'> > {};
32 struct JOIN :
Keyword<CharSeqIgnoreCase<'j', 'o', 'i', 'n'> > {};
33 struct AS :
Keyword<CharSeqIgnoreCase<'a', 's'> > {};
37 Seq<NATURAL, Opt<INNER>, JOIN> > {};
38 struct JoinItem : Or<Seq<ST<TopicName>, Opt<Seq<NaturalJoin, JoinItem> > >,
39 Seq<LPAREN, ST<TopicName>, NaturalJoin, JoinItem, RPAREN> > {};
40 struct Selection : Seq<ST<TopicName>, Opt<Seq<NaturalJoin, JoinItem> > > {};
43 Seq<NotAt<FROM>, ST<FieldName> > > {};
46 DelimitedList<ST<SubjectFieldSpec>, Tok<Char<','> > > > {};
48 struct SelectFrom : Seq<SELECT, Aggregation, FROM, Selection> {};
49 struct WhereClause : Seq<WHERE, Store<FilterExpressionGrammar::Cond> > {};
50 struct TopicExpr : Seq<SelectFrom, Opt<WhereClause> > {};
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
The Internal API and Implementation of OpenDDS.