40 #ifndef YY_YY_LIB_VCSN_RAT_PARSE_HH_INCLUDED
41 # define YY_YY_LIB_VCSN_RAT_PARSE_HH_INCLUDED
43 #line 16 "lib/vcsn/rat/parse.yy" // lalr1.cc:372
82 #line 83 "./lib/vcsn/rat/parse.hh" // lalr1.cc:372
94 # define YYASSERT assert
99 # if (defined __GNUC__ \
100 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
101 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
102 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
104 # define YY_ATTRIBUTE(Spec)
108 #ifndef YY_ATTRIBUTE_PURE
109 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
112 #ifndef YY_ATTRIBUTE_UNUSED
113 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
116 #if !defined _Noreturn \
117 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
118 # if defined _MSC_VER && 1200 <= _MSC_VER
119 # define _Noreturn __declspec (noreturn)
121 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
126 #if ! defined lint || defined __GNUC__
127 # define YYUSE(E) ((void) (E))
132 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
134 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
135 _Pragma ("GCC diagnostic push") \
136 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
137 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
138 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
139 _Pragma ("GCC diagnostic pop")
141 # define YY_INITIAL_VALUE(Value) Value
143 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
144 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
145 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
147 #ifndef YY_INITIAL_VALUE
148 # define YY_INITIAL_VALUE(Value)
156 #line 11 "lib/vcsn/rat/parse.yy" // lalr1.cc:372
157 namespace vcsn {
namespace rat {
158 #line 159 "./lib/vcsn/rat/parse.hh" // lalr1.cc:372
178 template <
typename T>
182 new (yyas_<T> ()) T (t);
190 template <
typename T>
194 return *
new (yyas_<T> ()) T;
198 template <
typename T>
202 return *
new (yyas_<T> ()) T (t);
206 template <
typename T>
214 template <
typename T>
229 template <
typename T>
233 std::swap (as<T> (), other.
as<T> ());
239 template <
typename T>
249 template <
typename T>
253 build<T> (other.
as<T> ());
257 template <
typename T>
270 template <
typename T>
275 return static_cast<T*
> (yyp);
279 template <
typename T>
284 return static_cast<const T*
> (yyp);
325 char dummy6[
sizeof(std::vector<vcsn::dyn::expression>)];
339 syntax_error (
const location_type& l,
const std::string& m);
397 template <
typename Base>
411 basic_symbol (
typename Base::kind_type t,
const location_type& l);
421 basic_symbol (
typename Base::kind_type t,
const std::string
v,
const location_type& l);
423 basic_symbol (
typename Base::kind_type t,
const std::vector<vcsn::dyn::expression>
v,
const location_type& l);
428 const semantic_type&
v,
429 const location_type& l);
467 symbol_number_type
type_get ()
const;
470 token_type
token ()
const;
497 make_AT (
const location_type& l);
589 make_LETTER (
const std::string&
v,
const location_type& l);
593 make_WEIGHT (
const std::string&
v,
const location_type& l);
614 virtual int parse ();
633 virtual void error (
const location_type& loc,
const std::string& msg);
650 symbol_number_type yytoken)
const;
706 static std::string
yytnamerr_ (
const char *n);
726 template <
typename Base>
734 template <
typename Base>
758 symbol_number_type
type_get ()
const;
798 void yypush_ (
const char* m, state_type s, symbol_type& sym);
801 void yypop_ (
unsigned int n = 1);
827 const token_number_type
830 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
831 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
832 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
833 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
834 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
835 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
836 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
837 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
838 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
839 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
840 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
841 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
842 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
843 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
844 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
845 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
846 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
847 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
848 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
849 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
850 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
851 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
852 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
853 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
854 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
855 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
856 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
857 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
858 25, 26, 27, 28, 29, 30, 31, 32
860 const unsigned int user_token_number_max_ = 287;
861 const token_number_type undef_token_ = 2;
863 if (static_cast<int>(t) <=
yyeof_)
865 else if (static_cast<unsigned int> (t) <= user_token_number_max_)
866 return translate_table[t];
873 :
std::runtime_error (m)
878 template <
typename Base>
884 template <
typename Base>
891 switch (other.type_get ())
928 template <
typename Base>
936 switch (this->type_get ())
963 value.
copy< std::vector<vcsn::dyn::expression> > (
v);
974 template <
typename Base>
981 template <
typename Base>
988 template <
typename Base>
995 template <
typename Base>
1002 template <
typename Base>
1009 template <
typename Base>
1016 template <
typename Base>
1024 template <
typename Base>
1029 symbol_number_type yytype = this->type_get ();
1043 value.template destroy< braced_expression > ();
1047 value.template destroy< class_t > ();
1051 value.template destroy< dyn::weight > ();
1055 value.template destroy< irange_type > ();
1060 value.template destroy< std::string > ();
1064 value.template destroy< std::vector<vcsn::dyn::expression> > ();
1073 template <
typename Base>
1078 super_type::move(s);
1079 switch (this->type_get ())
1102 value.move< std::string > (s.
value);
1106 value.move< std::vector<vcsn::dyn::expression> > (s.
value);
1154 const unsigned short int
1157 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1158 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1159 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1162 return static_cast<token_type
> (yytoken_number_[
type]);
1352 #line 11 "lib/vcsn/rat/parse.yy" // lalr1.cc:372
1354 #line 1355 "./lib/vcsn/rat/parse.hh" // lalr1.cc:372
1358 #line 56 "lib/vcsn/rat/parse.yy" // lalr1.cc:372
1360 #define YY_DECL_(Class) \
1361 parser::symbol_type Class lex(driver& driver_)
1362 #define YY_DECL YY_DECL_(yyFlexLexer::)
1364 #line 1365 "./lib/vcsn/rat/parse.hh" // lalr1.cc:372
1367 #endif // !YY_YY_LIB_VCSN_RAT_PARSE_HH_INCLUDED
static symbol_type make_ONE(const location_type &l)
char dummy3[sizeof(dyn::weight)]
Base super_type
Alias to Base.
static symbol_type make_STAR(const irange_type &v, const location_type &l)
void destroy()
Destroy the stored T.
static symbol_type make_RWEIGHT(const location_type &l)
bool lparen
Whether there was a left-paren.
static const unsigned char yydefact_[]
variant< sizeof(union_type)> semantic_type
Symbol semantic values.
Type access provider for token (enum) based symbols.
static symbol_type make_COLON(const location_type &l)
int debug_level_type
Type for debugging levels.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
~variant()
Destruction, allowed only if empty.
static symbol_type make_PERCENT(const location_type &l)
static symbol_type make_LT_PLUS(const location_type &l)
static symbol_type make_COMPLEMENT(const location_type &l)
void yypop_(unsigned int n=1)
Pop n symbols the three stacks.
by_type()
Default constructor.
static symbol_type make_DASH(const location_type &l)
static symbol_type make_RBRACKET(const location_type &l)
#define YY_ATTRIBUTE_PURE
static const short int yypact_[]
static symbol_type make_AMPERSAND_COLON(const location_type &l)
static symbol_type make_CONCAT(const location_type &l)
static token_number_type yytranslate_(token_type t)
Convert a scanner token number t to a symbol number.
basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
void yy_print_(std::ostream &yyo, const basic_symbol< Base > &yysym) const
Display a symbol type, value and location.
stack_symbol_type()
Construct an empty symbol.
basic_symbol()
Default constructor.
Termination state number.
Syntax errors thrown from user actions.
Define the vcsn::rat::stack class.
std::tuple< int, int > irange_type
An integer range, for quantifiers/exponents.
static symbol_type make_CARET(const location_type &l)
symbol_number_type type_get() const
The (internal) type number (corresponding to state).
virtual void yy_reduce_print_(int r)
Report on the debug stream that the rule r is going to be reduced.
static symbol_type make_ZERO(const location_type &l)
const T & as() const
Const accessor to a built T (for printer).
static const signed char yypact_ninf_
T & as()
Accessor to a built T.
const T * yyas_() const
Const accessor to raw memory as T.
static symbol_type make_COMMA(const location_type &l)
virtual std::string yysyntax_error_(state_type yystate, symbol_number_type yytoken) const
Generate an error message.
char dummy2[sizeof(class_t)]
static symbol_type make_SLASH(const location_type &l)
variant< S > self_type
Type of *this.
int state_type
State numbers.
int symbol_number_type
Internal symbol number.
location location_type
Symbol locations.
stack_symbol_type & operator=(const stack_symbol_type &that)
Assignment, needed by push_back.
void yypush_(const char *m, stack_symbol_type &s)
Push a new state on the stack.
void move(by_type &that)
Steal the symbol type from that.
T & build(const T &t)
Instantiate a T in here from t.
state_type kind_type
The symbol type as needed by the constructor.
stack< stack_symbol_type > stack_type
Stack type.
static const signed char yypgoto_[]
symbol_number_type type_get() const
The (internal) type number (corresponding to type).
State and public interface for rational expression parsing.
static const unsigned char yystos_[]
static symbol_type make_LWEIGHT(const location_type &l)
A char[S] buffer to store and retrieve objects.
basic_symbol< by_state > super_type
Superclass.
static symbol_type make_AT(const location_type &l)
char dummy5[sizeof(std::string)]
Provide a variadic mul on top of a binary mul(), and one().
void copy(const self_type &other)
Copy the content of other to this.
std::string type(const automaton &a)
The implementation type of a.
static symbol_type make_BANG(const location_type &l)
char dummy6[sizeof(std::vector< vcsn::dyn::expression >)]
parser(driver &driver__yyarg)
Build a parser object.
union vcsn::rat::variant::@5 yybuffer_
virtual int parse()
Parse.
syntax_error(const location_type &l, const std::string &m)
static const char *const yytname_[]
For a symbol, its name in clear.
void set_debug_stream(std::ostream &)
Set the current debugging stream.
braced_expression & operator=(dyn::expression e)
unsigned char token_number_type
Internal symbol number for tokens (subsumed by symbol_number_type).
self_type & operator=(const self_type &)
Prohibit blind copies.
location_type location
The location.
char dummy4[sizeof(irange_type)]
An expression that "remembers" whether it was in parentheses.
Number of nonterminal symbols.
static symbol_type make_WEIGHT(const std::string &v, const location_type &l)
void move(by_state &that)
Steal the symbol type from that.
T & as()
Accessor to a built T.
static const unsigned char yyr1_[]
T & build()
Instantiate an empty T in here.
char yyraw[S]
A buffer large enough to store any of the semantic values.
void swap(self_type &other)
Swap the content with other, of same type.
void move(self_type &other)
Move the content of other to this.
void yy_destroy_(const char *yymsg, basic_symbol< Base > &yysym) const
Reclaim the memory associated to a symbol.
state_type yy_lr_goto_state_(state_type yystate, int yysym)
Compute post-reduction state.
static symbol_type make_DOT(const location_type &l)
Type access provider for state based symbols.
"Internal" symbol: element of the stack.
T * yyas_()
Accessor to raw memory as T.
static const unsigned char yytable_[]
virtual void yystack_print_()
Print the state stack on the debug stream.
token_type token() const
The token.
variant()
Empty construction.
long double yyalign_me
Strongest alignment constraints.
static std::string yytnamerr_(const char *n)
Convert the symbol name n to a form suitable for a diagnostic.
static const signed char yydefgoto_[]
static const unsigned short int yyrline_[]
state_type state
The state.
static symbol_type make_TRANSPOSITION(const location_type &l)
dyn::expression exp
The expression parsed so far.
static bool yy_pact_value_is_default_(int yyvalue)
Whether the given yypact_ value indicates a defaulted state.
token_type kind_type
The symbol type as needed by the constructor.
Define the vcsn::rat::location class.
static const unsigned char yyr2_[]
static symbol_type make_AMPERSAND(const location_type &l)
A char[S] buffer to store and retrieve objects.
static symbol_type make_BACKSLASH(const location_type &l)
parser & operator=(const parser &)
static symbol_type make_END(const location_type &l)
value_impl< detail::weight_tag > weight
static symbol_type make_PLUS(const location_type &l)
basic_symbol & operator=(const basic_symbol &other)
Assignment operator.
bool rparen
Whether there was a right-paren.
static const signed char yytable_ninf_
char dummy1[sizeof(braced_expression)]
static symbol_type make_LPAREN(const location_type &l)
static symbol_type make_PIPE(const location_type &l)
token::yytokentype token_type
(External) token type, as returned by yylex.
static symbol_type make_TRANSPOSE(const location_type &l)
std::ostream & debug_stream() const
The current debugging stream.
static const signed char yycheck_[]
stack_type yystack_
The stack.
std::set< std::pair< std::string, std::string >> class_t
A set of label ranges.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
static symbol_type make_RPAREN(const location_type &l)
token_number_type type
The symbol type.
static symbol_type make_LBRACKET(const location_type &l)
static bool yy_table_value_is_error_(int yyvalue)
Whether the given yytable_ value indicates a syntax error.
debug_level_type debug_level() const
The current debugging level.
by_state()
Default constructor.
variant(const T &t)
Construct and fill.
static symbol_type make_LETTER(const std::string &v, const location_type &l)
value_impl< detail::expression_tag > expression
An auxiliary type to compute the largest semantic type.
semantic_type value
The semantic value.
void set_debug_level(debug_level_type l)
Set the current debugging level.
void destroy()
Destroy the stored T.