40 #ifndef YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
41 # define YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
43 #line 16 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:377
82 #line 83 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.hh" // lalr1.cc:377
95 # define YYASSERT assert
100 # if (defined __GNUC__ \
101 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
102 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
103 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
105 # define YY_ATTRIBUTE(Spec)
109 #ifndef YY_ATTRIBUTE_PURE
110 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
113 #ifndef YY_ATTRIBUTE_UNUSED
114 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
117 #if !defined _Noreturn \
118 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
119 # if defined _MSC_VER && 1200 <= _MSC_VER
120 # define _Noreturn __declspec (noreturn)
122 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
127 #if ! defined lint || defined __GNUC__
128 # define YYUSE(E) ((void) (E))
133 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
135 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
136 _Pragma ("GCC diagnostic push") \
137 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
138 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
139 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
140 _Pragma ("GCC diagnostic pop")
142 # define YY_INITIAL_VALUE(Value) Value
144 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
145 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
146 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
148 #ifndef YY_INITIAL_VALUE
149 # define YY_INITIAL_VALUE(Value)
157 #line 11 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:377
158 namespace vcsn {
namespace rat {
159 #line 160 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.hh" // lalr1.cc:377
179 template <
typename T>
183 new (yyas_<T> ()) T (t);
191 template <
typename T>
195 return *
new (yyas_<T> ()) T;
199 template <
typename T>
203 return *
new (yyas_<T> ()) T (t);
207 template <
typename T>
215 template <
typename T>
230 template <
typename T>
234 std::swap (as<T> (), other.
as<T> ());
240 template <
typename T>
250 template <
typename T>
254 build<T> (other.
as<T> ());
258 template <
typename T>
271 template <
typename T>
276 return static_cast<T*
> (yyp);
280 template <
typename T>
285 return static_cast<const T*
> (yyp);
326 char dummy6[
sizeof(std::vector<vcsn::dyn::expression>)];
340 syntax_error (
const location_type& l,
const std::string& m);
398 template <
typename Base>
412 basic_symbol (
typename Base::kind_type t,
const location_type& l);
422 basic_symbol (
typename Base::kind_type t,
const std::string
v,
const location_type& l);
424 basic_symbol (
typename Base::kind_type t,
const std::vector<vcsn::dyn::expression>
v,
const location_type& l);
429 const semantic_type&
v,
430 const location_type& l);
478 symbol_number_type
type_get ()
const;
481 token_type
token ()
const;
587 make_LETTER (
const std::string&
v,
const location_type& l);
591 make_WEIGHT (
const std::string&
v,
const location_type& l);
612 virtual int parse ();
631 virtual void error (
const location_type& loc,
const std::string& msg);
648 const symbol_type& yyla)
const;
704 static std::string
yytnamerr_ (
const char *n);
724 template <
typename Base>
732 template <
typename Base>
759 symbol_number_type
type_get ()
const;
801 void yypush_ (
const char* m, state_type s, symbol_type& sym);
804 void yypop_ (
unsigned int n = 1);
829 const token_number_type
832 0, 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, 2, 2, 2, 2,
856 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
857 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
858 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
859 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
862 const unsigned int user_token_number_max_ = 284;
863 const token_number_type undef_token_ = 2;
865 if (static_cast<int>(t) <=
yyeof_)
867 else if (static_cast<unsigned int> (t) <= user_token_number_max_)
868 return translate_table[t];
875 :
std::runtime_error (m)
880 template <
typename Base>
886 template <
typename Base>
893 switch (other.type_get ())
930 template <
typename Base>
938 switch (this->type_get ())
965 value.
copy< std::vector<vcsn::dyn::expression> > (
v);
976 template <
typename Base>
983 template <
typename Base>
990 template <
typename Base>
997 template <
typename Base>
1004 template <
typename Base>
1011 template <
typename Base>
1018 template <
typename Base>
1026 template <
typename Base>
1033 template <
typename Base>
1039 symbol_number_type yytype = this->type_get ();
1055 value.template destroy< braced_expression > ();
1059 value.template destroy< class_t > ();
1063 value.template destroy< dyn::weight > ();
1067 value.template destroy< irange_type > ();
1072 value.template destroy< std::string > ();
1076 value.template destroy< std::vector<vcsn::dyn::expression> > ();
1086 template <
typename Base>
1094 template <
typename Base>
1099 super_type::move(s);
1100 switch (this->type_get ())
1123 value.move< std::string > (s.
value);
1127 value.move< std::vector<vcsn::dyn::expression> > (s.
value);
1182 const unsigned short int
1185 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1186 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1187 275, 276, 277, 278, 279, 280, 281, 282, 283, 284
1189 return static_cast<token_type
> (yytoken_number_[
type]);
1361 #line 11 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:377
1363 #line 1364 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.hh" // lalr1.cc:377
1367 #line 56 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.yy" // lalr1.cc:377
1369 #define YY_DECL_(Class) \
1370 parser::symbol_type Class lex(driver& driver_)
1371 #define YY_DECL YY_DECL_(yyFlexLexer::)
1373 #line 1374 "/Users/akim/src/lrde/2/lib/vcsn/rat/parse.hh" // lalr1.cc:377
1376 #endif // !YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_RAT_PARSE_HH_INCLUDED
void move(self_type &other)
Move the content of other to this.
void set_debug_stream(std::ostream &)
Set the current debugging stream.
static const unsigned char yydefact_[]
token_type kind_type
The symbol type as needed by the constructor.
static symbol_type make_LT_PLUS(const location_type &l)
static symbol_type make_CARET(const location_type &l)
char yyraw[S]
A buffer large enough to store any of the semantic values.
static const short int yypact_[]
static symbol_type make_DOT(const location_type &l)
static std::string yytnamerr_(const char *n)
Convert the symbol name n to a form suitable for a diagnostic.
void move(basic_symbol &s)
Destructive move, s is emptied into this.
void clear()
Destroy contents, and record that is empty.
static symbol_type make_ONE(const location_type &l)
basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
static symbol_type make_STAR(const irange_type &v, const location_type &l)
static token_number_type yytranslate_(token_type t)
Convert a scanner token number t to a symbol number.
static symbol_type make_AMPERSAND(const location_type &l)
An expression that "remembers" whether it was in parentheses.
stack_symbol_type()
Construct an empty symbol.
location_type location
The location.
void yy_destroy_(const char *yymsg, basic_symbol< Base > &yysym) const
Reclaim the memory associated to a symbol.
~variant()
Destruction, allowed only if empty.
static symbol_type make_END(const location_type &l)
char dummy6[sizeof(std::vector< vcsn::dyn::expression >)]
static symbol_type make_TRANSPOSITION(const location_type &l)
static symbol_type make_COLON(const location_type &l)
symbol_number_type type_get() const
The (internal) type number (corresponding to type).
static const unsigned char yytable_[]
static const unsigned char yyr1_[]
virtual int parse()
Parse.
void destroy()
Destroy the stored T.
dyn::expression exp
The expression parsed so far.
int debug_level_type
Type for debugging levels.
bool lparen
Whether there was a left-paren.
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_LPAREN(const location_type &l)
std::string type(const automaton &a)
The implementation type of a.
unsigned char token_number_type
Internal symbol number for tokens (subsumed by symbol_number_type).
void clear()
Record that this symbol is empty.
static const unsigned char yystos_[]
static bool yy_pact_value_is_default_(int yyvalue)
Whether the given yypact_ value indicates a defaulted state.
virtual void error(const location_type &loc, const std::string &msg)
Report a syntax error.
token::yytokentype token_type
(External) token type, as returned by yylex.
basic_symbol & operator=(const basic_symbol &other)
Assignment operator.
void destroy()
Destroy the stored T.
std::set< std::pair< std::string, std::string >> class_t
A set of label ranges.
static symbol_type make_DASH(const location_type &l)
state_type yy_lr_goto_state_(state_type yystate, int yysym)
Compute post-reduction state.
static symbol_type make_PLUS(const location_type &l)
state_type kind_type
The symbol type as needed by the constructor.
static const char *const yytname_[]
For a symbol, its name in clear.
T & as()
Accessor to a built T.
State and public interface for rational expression parsing.
T & build()
Instantiate an empty T in here.
by_type()
Default constructor.
stack< stack_symbol_type > stack_type
Stack type.
void set_debug_level(debug_level_type l)
Set the current debugging level.
A char[S] buffer to store and retrieve objects.
virtual void yystack_print_()
Print the state stack on the debug stream.
T * yyas_()
Accessor to raw memory as T.
static symbol_type make_WEIGHT(const std::string &v, const location_type &l)
std::ostream & debug_stream() const
The current debugging stream.
std::shared_ptr< const detail::weight_base > weight
static const unsigned char yyr2_[]
void move(by_state &that)
Steal the symbol type from that.
static symbol_type make_AMPERSAND_COLON(const location_type &l)
Termination state number.
T & build(const T &t)
Instantiate a T in here from t.
std::tuple< int, int > irange_type
An integer range, for quantifiers/exponents.
Type access provider for state based symbols.
Provide a variadic mul on top of a binary mul(), and one().
Base super_type
Alias to Base.
char dummy4[sizeof(irange_type)]
An auxiliary type to compute the largest semantic type.
union vcsn::rat::variant::@5 yybuffer_
braced_expression & operator=(dyn::expression e)
void swap(self_type &other)
Swap the content with other, of same type.
symbol_number_type type_get() const
The (internal) type number (corresponding to state).
#define YY_ATTRIBUTE_PURE
const T * yyas_() const
Const accessor to raw memory as T.
Define the vcsn::rat::stack class.
static symbol_type make_COMPLEMENT(const location_type &l)
by_state()
Default constructor.
semantic_type value
The semantic value.
variant()
Empty construction.
static symbol_type make_RBRACKET(const location_type &l)
stack_symbol_type & operator=(const stack_symbol_type &that)
Assignment, needed by push_back.
void move(by_type &that)
Steal the symbol type from that.
A char[S] buffer to store and retrieve objects.
static symbol_type make_LETTER(const std::string &v, const location_type &l)
static symbol_type make_ZERO(const location_type &l)
static symbol_type make_PERCENT(const location_type &l)
syntax_error(const location_type &l, const std::string &m)
virtual std::string yysyntax_error_(state_type yystate, const symbol_type &yyla) const
Generate an error message.
void copy(const self_type &other)
Copy the content of other to this.
basic_symbol< by_state > super_type
Superclass.
static const signed char yypgoto_[]
const T & as() const
Const accessor to a built T (for printer).
static symbol_type make_CONCAT(const location_type &l)
stack_type yystack_
The stack.
char dummy5[sizeof(std::string)]
basic_symbol()
Default constructor.
long double yyalign_me
Strongest alignment constraints.
void yypop_(unsigned int n=1)
Pop n symbols the three stacks.
static const signed char yytable_ninf_
"Internal" symbol: element of the stack.
state_type state
The state.
static symbol_type make_LBRACKET(const location_type &l)
bool rparen
Whether there was a right-paren.
bool empty() const
Whether empty.
location location_type
Symbol locations.
Type access provider for token (enum) based symbols.
char dummy1[sizeof(braced_expression)]
static symbol_type make_LWEIGHT(const location_type &l)
char dummy2[sizeof(class_t)]
static const signed char yypact_ninf_
static symbol_type make_COMMA(const location_type &l)
char dummy3[sizeof(dyn::weight)]
std::shared_ptr< detail::expression_base > expression
static symbol_type make_PIPE(const location_type &l)
T & as()
Accessor to a built T.
int state_type
State numbers.
void yy_print_(std::ostream &yyo, const basic_symbol< Base > &yysym) const
Display a symbol type, value and location.
void clear()
Record that this symbol is empty.
variant< S > self_type
Type of *this.
void yypush_(const char *m, stack_symbol_type &s)
Push a new state on the stack.
variant< sizeof(union_type)> semantic_type
Symbol semantic values.
debug_level_type debug_level() const
The current debugging level.
static symbol_type make_SLASH(const location_type &l)
int symbol_number_type
Symbol type: an internal symbol number.
Syntax errors thrown from user actions.
parser(driver &driver__yyarg)
Build a parser object.
static bool yy_table_value_is_error_(int yyvalue)
Whether the given yytable_ value indicates a syntax error.
self_type & operator=(const self_type &)
Prohibit blind copies.
token_type token() const
The token.
static symbol_type make_RWEIGHT(const location_type &l)
~basic_symbol()
Destroy the symbol.
Number of nonterminal symbols.
variant(const T &t)
Construct and fill.
static symbol_type make_RPAREN(const location_type &l)
static const unsigned short int yyrline_[]
static const signed char yycheck_[]
static symbol_type make_BACKSLASH(const location_type &l)
Define the vcsn::rat::location class.
static const signed char yydefgoto_[]
parser & operator=(const parser &)