omega_h
Reliable mesh adaptation
Omega_h_build_parser.hpp
1 #ifndef OMEGA_H_BUILD_PARSER_HPP
2 #define OMEGA_H_BUILD_PARSER_HPP
3 
4 #include <memory>
5 #include <set>
6 
7 #include <Omega_h_parser.hpp>
8 #include <Omega_h_parser_graph.hpp>
9 
10 namespace Omega_h {
11 
12 struct Config {
13  int production;
14  int dot;
15 };
16 
17 using Configs = std::vector<Config>;
18 
19 using Context = std::set<int>;
20 
21 /* nonterminal transitions will be stored as SHIFT
22  actions while in progress */
24  Action action;
25  Context context;
26 };
27 
29  std::vector<int> configs;
30  std::vector<ActionInProgress> actions;
31 };
32 
33 using StatesInProgress = std::vector<std::unique_ptr<StateInProgress>>;
34 
35 struct StateConfig {
36  int state;
37  int config_in_state;
38 };
39 
40 using StateConfigs = std::vector<StateConfig>;
41 
43  StatesInProgress states;
44  Configs configs;
45  StateConfigs state_configs;
46  ParserGraph states2state_configs;
47  GrammarPtr grammar;
48 };
49 
50 StateConfigs form_state_configs(StatesInProgress const& states);
51 ParserGraph form_states_to_state_configs(
52  StateConfigs const& scs, StatesInProgress const& states);
53 
54 void print_dot(std::string const& filepath, ParserInProgress const& pip);
55 
56 ParserInProgress build_lalr1_parser(GrammarPtr grammar, bool verbose = false);
57 
58 Parser accept_parser(ParserInProgress const& pip);
59 
60 } // namespace Omega_h
61 
62 #endif
Definition: amr_mpi_test.cpp:6
Definition: Omega_h_build_parser.hpp:23
Definition: Omega_h_parser.hpp:18
Definition: Omega_h_build_parser.hpp:12
Definition: Omega_h_build_parser.hpp:42
Definition: Omega_h_parser.hpp:26
Definition: Omega_h_build_parser.hpp:35
Definition: Omega_h_build_parser.hpp:28