summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Moreland <smoreland@google.com>2018-06-04 22:29:57 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-06-04 22:29:57 +0000
commit887e2d99a5fce37931ea126b56bd7b08c183c0dc (patch)
treef3afed1b70d82e5e87911e3a0e1cb6a2d87231f5
parentb8036c7ba0fb200ba514c69add80b38cbba39cdd (diff)
parent275bd8b400d1026b2994ccdbf4bbc96c022a27c8 (diff)
downloadmclinker-887e2d99a5fce37931ea126b56bd7b08c183c0dc.tar.gz
-rw-r--r--include/mcld/Script/FlexLexer.h133
1 files changed, 77 insertions, 56 deletions
diff --git a/include/mcld/Script/FlexLexer.h b/include/mcld/Script/FlexLexer.h
index 3514ee1..cbc95f9 100644
--- a/include/mcld/Script/FlexLexer.h
+++ b/include/mcld/Script/FlexLexer.h
@@ -44,122 +44,141 @@
// to rename each yyFlexLexer to some other xxFlexLexer. You then
// include <FlexLexer.h> in your other sources once per lexer class:
//
-// #undef yyFlexLexer
-// #define yyFlexLexer xxFlexLexer
-// #include <FlexLexer.h>
+// #undef yyFlexLexer
+// #define yyFlexLexer xxFlexLexer
+// #include <FlexLexer.h>
//
-// #undef yyFlexLexer
-// #define yyFlexLexer zzFlexLexer
-// #include <FlexLexer.h>
-// ...
+// #undef yyFlexLexer
+// #define yyFlexLexer zzFlexLexer
+// #include <FlexLexer.h>
+// ...
#ifndef __FLEX_LEXER_H
// Never included before - need to define base class.
#define __FLEX_LEXER_H
#include <iostream>
-#ifndef FLEX_STD
-#define FLEX_STD std::
-#endif
extern "C++" {
+
struct yy_buffer_state;
typedef int yy_state_type;
-class FlexLexer {
- public:
- virtual ~FlexLexer() {}
+class FlexLexer
+{
+public:
+ virtual ~FlexLexer() { }
- const char* YYText() const { return yytext; }
- int YYLeng() const { return yyleng; }
+ const char* YYText() const { return yytext; }
+ int YYLeng() const { return yyleng; }
- virtual void yy_switch_to_buffer(struct yy_buffer_state* new_buffer) = 0;
- virtual struct yy_buffer_state* yy_create_buffer(FLEX_STD istream* s,
- int size) = 0;
- virtual void yy_delete_buffer(struct yy_buffer_state* b) = 0;
- virtual void yyrestart(FLEX_STD istream* s) = 0;
+ virtual void
+ yy_switch_to_buffer( yy_buffer_state* new_buffer ) = 0;
+ virtual yy_buffer_state* yy_create_buffer( std::istream* s, int size ) = 0;
+ virtual yy_buffer_state* yy_create_buffer( std::istream& s, int size ) = 0;
+ virtual void yy_delete_buffer( yy_buffer_state* b ) = 0;
+ virtual void yyrestart( std::istream* s ) = 0;
+ virtual void yyrestart( std::istream& s ) = 0;
virtual int yylex() = 0;
// Call yylex with new input/output sources.
- int yylex(FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0) {
- switch_streams(new_in, new_out);
+ int yylex( std::istream& new_in, std::ostream& new_out )
+ {
+ switch_streams( new_in, new_out );
+ return yylex();
+ }
+
+ int yylex( std::istream* new_in, std::ostream* new_out = 0)
+ {
+ switch_streams( new_in, new_out );
return yylex();
}
// Switch to new input/output streams. A nil stream pointer
// indicates "keep the current one".
- virtual void switch_streams(FLEX_STD istream* new_in = 0,
- FLEX_STD ostream* new_out = 0) = 0;
+ virtual void switch_streams( std::istream* new_in,
+ std::ostream* new_out ) = 0;
+ virtual void switch_streams( std::istream& new_in,
+ std::ostream& new_out ) = 0;
- int lineno() const { return yylineno; }
+ int lineno() const { return yylineno; }
- int debug() const { return yy_flex_debug; }
- void set_debug(int flag) { yy_flex_debug = flag; }
+ int debug() const { return yy_flex_debug; }
+ void set_debug( int flag ) { yy_flex_debug = flag; }
- protected:
+protected:
char* yytext;
int yyleng;
int yylineno; // only maintained if you use %option yylineno
int yy_flex_debug; // only has effect with -d or "%option debug"
};
+
}
-#endif // FLEXLEXER_H
+#endif // FLEXLEXER_H
-#if defined(yyFlexLexer) || !defined(yyFlexLexerOnce)
+#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce)
// Either this is the first time through (yyFlexLexerOnce not defined),
// or this is a repeated include to define a different flavor of
// yyFlexLexer, as discussed in the flex manual.
-#define yyFlexLexerOnce
+# define yyFlexLexerOnce
extern "C++" {
+
class yyFlexLexer : public FlexLexer {
- public:
+public:
// arg_yyin and arg_yyout default to the cin and cout, but we
// only make that assignment when initializing in yylex().
- yyFlexLexer(FLEX_STD istream* arg_yyin = 0, FLEX_STD ostream* arg_yyout = 0);
+ yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout );
+ yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );
+private:
+ void ctor_common();
+
+public:
virtual ~yyFlexLexer();
- void yy_switch_to_buffer(struct yy_buffer_state* new_buffer);
- struct yy_buffer_state* yy_create_buffer(FLEX_STD istream* s, int size);
- void yy_delete_buffer(struct yy_buffer_state* b);
- void yyrestart(FLEX_STD istream* s);
+ void yy_switch_to_buffer( yy_buffer_state* new_buffer );
+ yy_buffer_state* yy_create_buffer( std::istream* s, int size );
+ yy_buffer_state* yy_create_buffer( std::istream& s, int size );
+ void yy_delete_buffer( yy_buffer_state* b );
+ void yyrestart( std::istream* s );
+ void yyrestart( std::istream& s );
- void yypush_buffer_state(struct yy_buffer_state* new_buffer);
+ void yypush_buffer_state( yy_buffer_state* new_buffer );
void yypop_buffer_state();
virtual int yylex();
- virtual void switch_streams(FLEX_STD istream* new_in,
- FLEX_STD ostream* new_out = 0);
+ virtual void switch_streams( std::istream& new_in, std::ostream& new_out );
+ virtual void switch_streams( std::istream* new_in = 0, std::ostream* new_out = 0 );
virtual int yywrap();
- protected:
- virtual int LexerInput(char* buf, int max_size);
- virtual void LexerOutput(const char* buf, int size);
- virtual void LexerError(const char* msg);
+protected:
+ virtual int LexerInput( char* buf, int max_size );
+ virtual void LexerOutput( const char* buf, int size );
+ virtual void LexerError( const char* msg );
- void yyunput(int c, char* buf_ptr);
+ void yyunput( int c, char* buf_ptr );
int yyinput();
void yy_load_buffer_state();
- void yy_init_buffer(struct yy_buffer_state* b, FLEX_STD istream* s);
- void yy_flush_buffer(struct yy_buffer_state* b);
+ void yy_init_buffer( yy_buffer_state* b, std::istream& s );
+ void yy_flush_buffer( yy_buffer_state* b );
int yy_start_stack_ptr;
int yy_start_stack_depth;
int* yy_start_stack;
- void yy_push_state(int new_state);
+ void yy_push_state( int new_state );
void yy_pop_state();
int yy_top_state();
yy_state_type yy_get_previous_state();
- yy_state_type yy_try_NUL_trans(yy_state_type current_state);
+ yy_state_type yy_try_NUL_trans( yy_state_type current_state );
int yy_get_next_buffer();
- FLEX_STD istream* yyin; // input source for default LexerInput
- FLEX_STD ostream* yyout; // output sink for default LexerOutput
+ std::istream yyin; // input source for default LexerInput
+ std::ostream yyout; // output sink for default LexerOutput
// yy_hold_char holds the character lost when yytext is formed.
char yy_hold_char;
@@ -170,16 +189,17 @@ class yyFlexLexer : public FlexLexer {
// Points to current character in buffer.
char* yy_c_buf_p;
- int yy_init; // whether we need to initialize
- int yy_start; // start state number
+ int yy_init; // whether we need to initialize
+ int yy_start; // start state number
// Flag which is used to allow yywrap()'s to do buffer switches
// instead of setting up a fresh yyin. A bit of a hack ...
int yy_did_buffer_switch_on_eof;
- size_t yy_buffer_stack_top; /**< index of top of stack. */
- size_t yy_buffer_stack_max; /**< capacity of stack. */
- struct yy_buffer_state** yy_buffer_stack; /**< Stack as an array. */
+
+ size_t yy_buffer_stack_top; /**< index of top of stack. */
+ size_t yy_buffer_stack_max; /**< capacity of stack. */
+ yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */
void yyensure_buffer_stack(void);
// The following are not always needed, but may be depending
@@ -203,6 +223,7 @@ class yyFlexLexer : public FlexLexer {
int yy_more_offset;
int yy_prev_more_offset;
};
+
}
#endif // yyFlexLexer || ! yyFlexLexerOnce