JODA  0.13.1 (59b41972)
JSON On-Demand Analysis
As.h
Go to the documentation of this file.
1 //
2 // Created by Nico on 21/02/2019.
3 //
4 
5 #ifndef JODA_AS_H
6 #define JODA_AS_H
7 
8 #include "../../../../../../../extern/PEGTL/include/tao/pegtl.hpp"
9 #include "Literals.h"
10 
12 
13 /*
14  * Forward Declaration Actions
15  */
16 template <typename Rule>
17 struct asExpAction : tao::pegtl::nothing<Rule> {};
18 /*
19  * Keywords
20  */
21 #ifndef __CLION_IDE__ // Prevent lag from expanding all macros
22 struct asKW : TAOCPP_PEGTL_KEYWORD("AS") {};
23 
24 struct projectKW_ARRFLAT : TAOCPP_PEGTL_KEYWORD("FLATTEN") {};
25 struct projectKW_ALL : tao::pegtl::one<'*'> {};
26 #endif
27 
28 struct setProjectionKW : tao::pegtl::sor<projectKW_ARRFLAT> {};
31  : tao::pegtl::sor<projectFromPointer, functionstateaction> {};
32 
34  : tao::pegtl::if_must<setProjectionKW,
35  tao::pegtl::seq<tao::pegtl::one<'('>, setProjectParam,
36  tao::pegtl::one<')'>>> {};
37 struct projectFrom : tao::pegtl::sor<setProjectionExp, functionstateaction,
38  projectFromPointer, tao::pegtl::success> {
39 };
40 
43  : tao::pegtl::seq<
44  tao::pegtl::must<tao::pegtl::one<'('>>,
45  tao::pegtl::pad<tao::pegtl::must<projectToPointer>,
46  tao::pegtl::space>,
47  tao::pegtl::pad<tao::pegtl::must<tao::pegtl::one<':'>>,
48  tao::pegtl::space>,
49  tao::pegtl::pad<tao::pegtl::must<projectFrom>, tao::pegtl::space>,
50  tao::pegtl::must<
51  tao::pegtl::pad<tao::pegtl::one<')'>, tao::pegtl::space>>> {};
52 
53 struct projectSingleExp : tao::pegtl::sor<projectKW_ALL, projectTupleExp> {};
54 
55 struct projectExp
56  : tao::pegtl::list_must<projectSingleExp, tao::pegtl::one<','>,
57  tao::pegtl::space> {};
58 
59 } // namespace joda::queryparsing::grammar
60 
61 #endif // JODA_AS_H
Definition: Literals.h:27