40 #ifndef YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_DOT_PARSE_HH_INCLUDED 41 # define YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_DOT_PARSE_HH_INCLUDED 43 #line 17 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.yy" // lalr1.cc:377 88 #line 89 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.hh" // lalr1.cc:377 101 # define YYASSERT assert 106 # if (defined __GNUC__ \ 107 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ 108 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C 109 # define YY_ATTRIBUTE(Spec) __attribute__(Spec) 111 # define YY_ATTRIBUTE(Spec) 115 #ifndef YY_ATTRIBUTE_PURE 116 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) 119 #ifndef YY_ATTRIBUTE_UNUSED 120 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) 123 #if !defined _Noreturn \ 124 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) 125 # if defined _MSC_VER && 1200 <= _MSC_VER 126 # define _Noreturn __declspec (noreturn) 128 # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) 133 #if ! defined lint || defined __GNUC__ 134 # define YYUSE(E) ((void) (E)) 139 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ 141 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ 142 _Pragma ("GCC diagnostic push") \ 143 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ 144 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") 145 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ 146 _Pragma ("GCC diagnostic pop") 148 # define YY_INITIAL_VALUE(Value) Value 150 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 151 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN 152 # define YY_IGNORE_MAYBE_UNINITIALIZED_END 154 #ifndef YY_INITIAL_VALUE 155 # define YY_INITIAL_VALUE(Value) 163 #line 11 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.yy" // lalr1.cc:377 164 namespace vcsn {
namespace detail {
namespace dot {
165 #line 166 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.hh" // lalr1.cc:377 185 template <
typename T>
189 new (yyas_<T> ()) T (t);
197 template <
typename T>
201 return *
new (yyas_<T> ()) T;
205 template <
typename T>
209 return *
new (yyas_<T> ()) T (t);
213 template <
typename T>
221 template <
typename T>
236 template <
typename T>
246 template <
typename T>
256 template <
typename T>
260 build<T> (other.
as<T> ());
264 template <
typename T>
273 self_type& operator=(
const self_type&);
277 template <
typename T>
281 void *yyp = yybuffer_.yyraw;
282 return static_cast<T*
> (yyp);
286 template <
typename T>
290 const void *yyp = yybuffer_.yyraw;
291 return static_cast<const T*
> (yyp);
337 typedef YYSTYPE semantic_type;
345 syntax_error (
const location_type& l,
const std::string& m);
380 enum { empty_symbol = -2 };
391 template <
typename Base>
405 basic_symbol (
typename Base::kind_type t,
const location_type& l);
416 const semantic_type&
v,
417 const location_type& l);
465 symbol_number_type type_get ()
const;
468 token_type
token ()
const;
482 make_END (
const location_type& l);
486 make_DIGRAPH (
const location_type& l);
490 make_EDGE (
const location_type& l);
494 make_GRAPH (
const location_type& l);
498 make_NODE (
const location_type& l);
502 make_SUBGRAPH (
const location_type& l);
506 make_LBRACE (
const location_type& l);
510 make_RBRACE (
const location_type& l);
514 make_LBRACKET (
const location_type& l);
518 make_RBRACKET (
const location_type& l);
522 make_EQ (
const location_type& l);
526 make_ARROW (
const location_type& l);
530 make_COLON (
const location_type& l);
534 make_COMMA (
const location_type& l);
538 make_SEMI (
const location_type& l);
542 make_ID (
const string_t&
v,
const location_type& l);
551 virtual int parse ();
557 void set_debug_stream (
std::ostream &);
564 void set_debug_level (debug_level_type l);
570 virtual void error (
const location_type& loc,
const std::string& msg);
586 virtual std::string yysyntax_error_ (state_type yystate,
587 const symbol_type& yyla)
const;
592 state_type yy_lr_goto_state_ (state_type yystate,
int yysym);
596 static bool yy_pact_value_is_default_ (
int yyvalue);
600 static bool yy_table_value_is_error_ (
int yyvalue);
606 static token_number_type yytranslate_ (token_type t);
611 static const signed char yypact_[];
616 static const unsigned char yydefact_[];
619 static const signed char yypgoto_[];
622 static const signed char yydefgoto_[];
627 static const signed char yytable_[];
629 static const unsigned char yycheck_[];
633 static const unsigned char yystos_[];
636 static const unsigned char yyr1_[];
639 static const unsigned char yyr2_[];
643 static std::string yytnamerr_ (
const char *n);
647 static const char*
const yytname_[];
650 static const unsigned short int yyrline_[];
652 virtual void yy_reduce_print_ (
int r);
654 virtual void yystack_print_ ();
663 template <
typename Base>
671 template <
typename Base>
698 symbol_number_type type_get ()
const;
701 enum { empty_state = -1 };
740 void yypush_ (
const char* m, state_type s, symbol_type& sym);
743 void yypop_ (
unsigned int n = 1);
768 const token_number_type
771 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
772 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
773 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
774 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
776 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
777 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
778 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
779 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
781 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
782 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
797 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
800 const unsigned int user_token_number_max_ = 272;
801 const token_number_type undef_token_ = 2;
803 if (static_cast<int>(t) <= yyeof_)
805 else if (static_cast<unsigned int> (t) <= user_token_number_max_)
806 return translate_table[t];
813 :
std::runtime_error (m)
818 template <
typename Base>
824 template <
typename Base>
831 switch (other.type_get ())
864 template <
typename Base>
872 switch (this->type_get ())
906 template <
typename Base>
913 template <
typename Base>
920 template <
typename Base>
927 template <
typename Base>
935 template <
typename Base>
942 template <
typename Base>
948 symbol_number_type yytype = this->type_get ();
961 value.template destroy< paths_t > ();
969 value.template destroy< states_t > ();
981 value.template destroy< string_t > ();
991 template <
typename Base>
996 return Base::type_get () == empty_symbol;
999 template <
typename Base>
1004 super_type::move(s);
1005 switch (this->type_get ())
1040 parser::by_type::by_type ()
1041 :
type (empty_symbol)
1083 const unsigned short int 1086 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1087 265, 266, 267, 268, 269, 270, 271, 272
1089 return static_cast<token_type
> (yytoken_number_[
type]);
1189 #line 11 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.yy" // lalr1.cc:377 1191 #line 1192 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.hh" // lalr1.cc:377 1195 #line 63 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.yy" // lalr1.cc:377 1197 #define YY_DECL_(Class) \ 1198 parser::symbol_type Class lex(driver& driver_) 1199 #define YY_DECL YY_DECL_(yyFlexLexer::) 1201 #line 1202 "/Users/akim/src/lrde/2/lib/vcsn/dot/parse.hh" // lalr1.cc:377 1204 #endif // !YY_YY_USERS_AKIM_SRC_LRDE_2_LIB_VCSN_DOT_PARSE_HH_INCLUDED basic_symbol< by_type > symbol_type
"External" symbols: returned by the scanner.
void copy(const self_type &other)
Copy the content of other to this.
state_type kind_type
The symbol type as needed by the constructor.
token_type token() const
The token.
void move(self_type &other)
Move the content of other to this.
T & as()
Accessor to a built T.
location_type location
The location.
static symbol_type make_SUBGRAPH(const location_type &l)
static symbol_type make_SEMI(const location_type &l)
static symbol_type make_RBRACKET(const location_type &l)
void move(by_type &that)
Steal the symbol type from that.
static symbol_type make_ID(const string_t &v, const location_type &l)
static symbol_type make_LBRACKET(const location_type &l)
token::yytokentype token_type
(External) token type, as returned by yylex.
int debug_level_type
Type for debugging levels.
variant()
Empty construction.
semantic_type value
The semantic value.
Type access provider for token (enum) based symbols.
stack_type yystack_
The stack.
semantic_type value
The semantic value.
Syntax errors thrown from user actions.
static const signed char yytable_ninf_
symbol_number_type type_get() const
The (internal) type number (corresponding to type).
stack< stack_symbol_type > stack_type
Stack type.
variant< sizeof(union_type)> semantic_type
Symbol semantic values.
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
T & build()
Instantiate an empty T in here.
location_type location
The location.
void clear()
Record that this symbol is empty.
static symbol_type make_LBRACE(const location_type &l)
"Internal" symbol: element of the stack.
void swap(self_type &other)
Swap the content with other, of same type.
variant< S > self_type
Type of *this.
static symbol_type make_ARROW(const location_type &l)
Provide a variadic mul on top of a binary mul(), and one().
State and public interface for Dot parsing.
state_type state
The state.
static symbol_type make_GRAPH(const location_type &l)
std::vector< string_t > states_t
An auxiliary type to compute the largest semantic type.
std::ostream & dot(const Aut &aut, std::ostream &out=std::cout, format fmt={}, bool mathjax=false)
Print an automaton in Graphviz's Dot format.
A char[S] buffer to store and retrieve objects.
T & build(const T &t)
Instantiate a T in here from t.
by_type()
Default constructor.
syntax_error(const location_type &l, const std::string &m)
static symbol_type make_COLON(const location_type &l)
Type access provider for state based symbols.
#define YY_ATTRIBUTE_PURE
variant(const T &t)
Construct and fill.
Base super_type
Alias to Base.
~variant()
Destruction, allowed only if empty.
T * yyas_()
Accessor to raw memory as T.
Define the vcsn::detail::dot::stack class.
static const signed char yypact_ninf_
void swap(config::value &first, config::value &second)
static symbol_type make_DIGRAPH(const location_type &l)
static symbol_type make_NODE(const location_type &l)
unsigned char token_number_type
Internal symbol number for tokens (subsumed by symbol_number_type).
std::vector< std::pair< string_t, string_t > > transitions_t
const T * yyas_() const
Const accessor to raw memory as T.
int state_type
State numbers.
static symbol_type make_COMMA(const location_type &l)
const T & as() const
Const accessor to a built T (for printer).
static symbol_type make_EQ(const location_type &l)
static symbol_type make_END(const location_type &l)
static token_number_type yytranslate_(token_type t)
Convert a scanner token number t to a symbol number.
token_type kind_type
The symbol type as needed by the constructor.
static int debug_level()
Debug level set in the user's environment.
transitions_t transitions
void destroy()
Destroy the stored T.
static symbol_type make_RBRACE(const location_type &l)
static symbol_type make_EDGE(const location_type &l)
long double yyalign_me
Strongest alignment constraints.
basic_symbol< by_state > super_type
Superclass.
basic_symbol()
Default constructor.
int symbol_number_type
Symbol type: an internal symbol number.