40 #ifndef YY_HOAYY_PARSEAUT_HH_INCLUDED
41 # define YY_HOAYY_PARSEAUT_HH_INCLUDED
43 #line 31 "parseaut.yy" // lalr1.cc:377
46 #include <spot/misc/common.hh>
50 #include <unordered_map>
52 #include <spot/twa/formula2bdd.hh>
53 #include <spot/parseaut/public.hh>
54 #include "spot/priv/accmap.hh"
55 #include <spot/tl/parse.hh>
57 #ifndef HAVE_STRVERSCMP
59 extern "C" int strverscmp(
const char *s1,
const char *s2);
64 #define PARSE_ERROR_LIST res.h->errors
68 typedef std::map<int, bdd> map_t;
75 typedef std::map<std::string, bdd> formula_cache;
77 typedef std::pair<int, std::string*> pair;
85 enum label_style_t { Mixed_Labels, State_Labels, Trans_Labels,
87 enum acc_style_t { Mixed_Acc, State_Acc, Trans_Acc };
93 bool declared =
false;
95 spot::location used_loc;
97 spot::parsed_aut_ptr h;
98 spot::twa_ptr aut_or_ks;
100 std::string format_version;
101 spot::location format_version_loc;
103 formula_cache fcache;
104 named_tgba_t* namer =
nullptr;
105 spot::acc_mapper_int* acc_mapper =
nullptr;
107 std::vector<bdd> guards;
108 std::vector<bdd>::const_iterator cur_guard;
110 std::vector<state_info> info_states;
111 std::vector<std::pair<spot::location, unsigned>> start;
112 std::unordered_map<std::string, bdd> alias;
117 operator bool()
const
122 std::unordered_map<std::string, prop_info> props;
123 spot::location states_loc;
124 spot::location ap_loc;
125 spot::location state_label_loc;
126 spot::location accset_loc;
132 std::vector<std::string>* state_names =
nullptr;
133 std::map<unsigned, unsigned> states_map;
134 std::set<int> ap_set;
141 bool has_state_label =
false;
142 bool ignore_more_ap =
false;
144 bool ignore_acc =
false;
146 bool ignore_acc_silent =
false;
147 bool ignore_more_acc =
false;
150 label_style_t label_style = Mixed_Labels;
151 acc_style_t acc_style = Mixed_Acc;
153 bool accept_all_needed =
false;
154 bool accept_all_seen =
false;
155 bool aliased_states =
false;
158 bool complete =
false;
159 bool trans_acc_seen =
false;
161 std::map<std::string, spot::location> labels;
163 prop_info prop_is_true(
const std::string& p)
165 auto i = props.find(p);
166 if (i == props.end())
167 return prop_info{spot::location(),
false};
179 #line 180 "parseaut.hh" // lalr1.cc:377
184 # include <stdexcept>
192 # if (defined __GNUC__ \
193 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
194 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
195 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
197 # define YY_ATTRIBUTE(Spec)
201 #ifndef YY_ATTRIBUTE_PURE
202 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
205 #ifndef YY_ATTRIBUTE_UNUSED
206 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
209 #if !defined _Noreturn \
210 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
211 # if defined _MSC_VER && 1200 <= _MSC_VER
212 # define _Noreturn __declspec (noreturn)
214 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
219 #if ! defined lint || defined __GNUC__
220 # define YYUSE(E) ((void) (E))
225 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
227 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
228 _Pragma ("GCC diagnostic push") \
229 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
230 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
231 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
232 _Pragma ("GCC diagnostic pop")
234 # define YY_INITIAL_VALUE(Value) Value
236 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
237 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
238 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
240 #ifndef YY_INITIAL_VALUE
241 # define YY_INITIAL_VALUE(Value)
251 #line 252 "parseaut.hh" // lalr1.cc:377
265 #line 173 "parseaut.yy" // lalr1.cc:377
272 std::list<pair>* list;
275 #line 276 "parseaut.hh" // lalr1.cc:377
286 syntax_error (
const location_type& l,
const std::string& m);
287 location_type location;
351 enum { empty_symbol = -2 };
362 template <
typename Base>
376 const location_type& l);
380 const semantic_type& v,
381 const location_type& l);
429 symbol_number_type
type_get ()
const;
432 token_type
token ()
const;
445 parser (result_& res_yyarg, spot::location initial_loc_yyarg);
450 virtual int parse ();
461 debug_level_type
debug_level () const YY_ATTRIBUTE_PURE;
469 virtual void error (
const location_type& loc,
const std::string& msg);
480 typedef int state_type;
485 virtual std::string yysyntax_error_ (state_type yystate,
486 const symbol_type& yyla)
const;
491 state_type yy_lr_goto_state_ (state_type yystate,
int yysym);
495 static bool yy_pact_value_is_default_ (
int yyvalue);
499 static bool yy_table_value_is_error_ (
int yyvalue);
501 static const short int yypact_ninf_;
502 static const signed char yytable_ninf_;
505 static token_number_type yytranslate_ (
int t);
510 static const short int yypact_[];
515 static const unsigned char yydefact_[];
518 static const short int yypgoto_[];
521 static const short int yydefgoto_[];
526 static const short int yytable_[];
528 static const short int yycheck_[];
532 static const unsigned char yystos_[];
535 static const unsigned char yyr1_[];
538 static const unsigned char yyr2_[];
542 static std::string yytnamerr_ (
const char *n);
546 static const char*
const yytname_[];
549 static const unsigned short int yyrline_[];
551 virtual void yy_reduce_print_ (
int r);
553 virtual void yystack_print_ ();
557 std::ostream* yycdebug_;
562 template <
typename Base>
570 template <
typename Base>
581 typedef state_type kind_type;
584 by_state (kind_type s);
587 by_state (
const by_state& other);
593 void move (by_state& that);
597 symbol_number_type type_get ()
const;
600 enum { empty_state = -1 };
608 struct stack_symbol_type : basic_symbol<by_state>
611 typedef basic_symbol<by_state> super_type;
613 stack_symbol_type ();
615 stack_symbol_type (state_type s, symbol_type& sym);
617 stack_symbol_type& operator= (
const stack_symbol_type& that);
621 typedef stack<stack_symbol_type> stack_type;
631 void yypush_ (
const char* m, stack_symbol_type& s);
639 void yypush_ (
const char* m, state_type s, symbol_type& sym);
642 void yypop_ (
unsigned int n = 1);
659 spot::location initial_loc;
665 #line 666 "parseaut.hh" // lalr1.cc:377
670 #endif // !YY_HOAYY_PARSEAUT_HH_INCLUDED
void move(by_type &that)
Steal the symbol type from that.
debug_level_type debug_level() const
The current debugging level.
Definition: parseaut.hh:89
An environment that describes atomic propositions.
Definition: environment.hh:32
Symbol semantic values.
Definition: parseaut.hh:263
semantic_type value
The semantic value.
Definition: parseaut.hh:396
void move(basic_symbol &s)
Destructive move, s is emptied into this.
Syntax errors thrown from user actions.
Definition: parseaut.hh:284
void set_debug_level(debug_level_type l)
Set the current debugging level.
Definition: formula.hh:1543
Definition: parseaut.hh:91
virtual void error(const location_type &loc, const std::string &msg)
token_type token() const
The token.
token::yytokentype token_type
(External) token type, as returned by yylex.
Definition: parseaut.hh:345
Definition: parseaut.hh:250
Definition: parseaut.hh:113
void clear()
Record that this symbol is empty.
Tokens.
Definition: parseaut.hh:291
std::ostream & debug_stream() const
The current debugging stream.
Type access provider for token (enum) based symbols.
Definition: parseaut.hh:407
token_type kind_type
The symbol type as needed by the constructor.
Definition: parseaut.hh:416
Base super_type
Alias to Base.
Definition: parseaut.hh:366
symbol_number_type type_get() const
unsigned char token_number_type
Internal symbol number for tokens (subsumed by symbol_number_type).
Definition: parseaut.hh:354
A class implementing Kleene's three-valued logic.
Definition: trival.hh:33
~basic_symbol()
Destroy the symbol.
int type
Definition: parseaut.hh:437
basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
Definition: parseaut.hh:441
basic_symbol()
Default constructor.
spot::location location_type
Symbol locations.
Definition: parseaut.hh:281
Definition: parseaut.hh:66
A Bison parser.
Definition: parseaut.hh:258
parser(result_ &res_yyarg, spot::location initial_loc_yyarg)
Build a parser object.
void clear()
Destroy contents, and record that is empty.
Definition: parseaut.hh:363
void set_debug_stream(std::ostream &)
Set the current debugging stream.
by_type()
Default constructor.
location_type location
The location.
Definition: parseaut.hh:399
bool empty() const
Whether empty.
int symbol_number_type
Symbol type: an internal symbol number.
Definition: parseaut.hh:348
int debug_level_type
Type for debugging levels.
Definition: parseaut.hh:459