JODA  0.13.1 (59b41972)
JSON On-Demand Analysis
Grammar.h
Go to the documentation of this file.
1 //
2 // Created by Nico Schäfers on 09.November.17.
3 //
4 
5 #ifndef PARSER_GRAMMAR_H_H
6 #define PARSER_GRAMMAR_H_H
7 
14 #include <cctype>
15 #include <climits>
16 #include <functional>
17 #include <stack>
18 #include <string>
19 
20 #include "../../../../../../../extern/PEGTL/include/tao/pegtl.hpp"
21 
23 
24 /*
25  * Forward Declaration Actions
26  */
27 template <typename Rule>
28 struct queryAction : tao::pegtl::nothing<Rule> {};
29 
30 template <typename Rule>
31 struct queriesAction : tao::pegtl::nothing<Rule> {};
32 
33 
34 } // namespace joda::queryparsing::grammar
35 
36 #include "Literals.h"
37 
38 #include "Agg.h"
39 #include "As.h"
40 #include "Choose.h"
41 #include "Delete.h"
42 #include "Load.h"
43 #include "Store.h"
44 
46 /*
47  * Query
48  */
49 
51  : tao::pegtl::seq<
52  tao::pegtl::state<
53  loadState,
54  tao::pegtl::action<loadAction, tao::pegtl::must<loadCommand>>>,
55  tao::pegtl::state<
56  chooseState,
57  tao::pegtl::action<
58  chooseExpAction,
59  tao::pegtl::opt<tao::pegtl::pad<chooseKW, tao::pegtl::space>,
60  tao::pegtl::pad<tao::pegtl::must<qexp>,
61  tao::pegtl::space>>>>,
62  tao::pegtl::state<
63  asState,
64  tao::pegtl::action<
65  asExpAction,
66  tao::pegtl::opt<tao::pegtl::pad<asKW, tao::pegtl::space>,
67  tao::pegtl::pad<tao::pegtl::must<projectExp>,
68  tao::pegtl::space>>>>,
69  tao::pegtl::state<
70  aggState,
71  tao::pegtl::action<
72  aggExpAction,
73  tao::pegtl::opt<tao::pegtl::pad<aggKW, tao::pegtl::space>,
74  tao::pegtl::pad<tao::pegtl::must<aggExp>,
75  tao::pegtl::space>>>>,
76  tao::pegtl::state<
77  storeState,
78  tao::pegtl::action<storeAction, tao::pegtl::opt<storeCommand>>>,
79  tao::pegtl::state<
80  deleteState,
81  tao::pegtl::action<deleteAction, tao::pegtl::opt<deleteCommand>>>,
82  tao::pegtl::eof> {};
83 
84 struct query : tao::pegtl::must<queryCommand> {};
85 
86 struct single_query : tao::pegtl::state<
87  queryState,
88  tao::pegtl::action<
89  queryAction, queryCommand>> {};
90 
91 struct query_separator : tao::pegtl::one<';'> {};
92 
93 struct query_list : tao::pegtl::list_tail<single_query, query_separator,
94  tao::pegtl::space> {};
95 
96 struct queries : tao::pegtl::must<query_list,tao::pegtl::star<tao::pegtl::space>,
97  tao::pegtl::eof> {};
98 
99 
100 } // namespace joda::queryparsing::grammar
101 #endif // PARSER_GRAMMAR_H_H
Definition: Grammar.h:97
Definition: Grammar.h:84