Kinetis Bootloader Host  2.0.0
Host Tools for Kinetis devices
FlexLexer.h
1 // -*-C++-*-
2 // FlexLexer.h -- define interfaces for lexical analyzer classes generated
3 // by flex
4 
5 // Copyright (c) 1993 The Regents of the University of California.
6 // All rights reserved.
7 //
8 // This code is derived from software contributed to Berkeley by
9 // Kent Williams and Tom Epperly.
10 //
11 // Redistribution and use in source and binary forms, with or without
12 // modification, are permitted provided that the following conditions
13 // are met:
14 
15 // 1. Redistributions of source code must retain the above copyright
16 // notice, this list of conditions and the following disclaimer.
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 
21 // Neither the name of the University nor the names of its contributors
22 // may be used to endorse or promote products derived from this software
23 // without specific prior written permission.
24 
25 // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
26 // IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
27 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE.
29 
30 // This file defines FlexLexer, an abstract class which specifies the
31 // external interface provided to flex C++ lexer objects, and yyFlexLexer,
32 // which defines a particular lexer class.
33 //
34 // If you want to create multiple lexer classes, you use the -P flag
35 // to rename each yyFlexLexer to some other xxFlexLexer. You then
36 // include <FlexLexer.h> in your other sources once per lexer class:
37 //
38 // #undef yyFlexLexer
39 // #define yyFlexLexer xxFlexLexer
40 // #include <FlexLexer.h>
41 //
42 // #undef yyFlexLexer
43 // #define yyFlexLexer zzFlexLexer
44 // #include <FlexLexer.h>
45 // ...
46 
47 #ifndef __FLEX_LEXER_H
48 // Never included before - need to define base class.
49 #define __FLEX_LEXER_H
50 
51 #include <iostream>
52 #ifndef FLEX_STD
53 #define FLEX_STD std::
54 #endif
55 
56 extern "C++" {
57 
58 struct yy_buffer_state;
59 typedef int yy_state_type;
60 
61 class FlexLexer
62 {
63 public:
64  virtual ~FlexLexer() {}
65  const char *YYText() const { return yytext; }
66  int YYLeng() const { return yyleng; }
67  virtual void yy_switch_to_buffer(struct yy_buffer_state *new_buffer) = 0;
68  virtual struct yy_buffer_state *yy_create_buffer(FLEX_STD istream *s, int size) = 0;
69  virtual void yy_delete_buffer(struct yy_buffer_state *b) = 0;
70  virtual void yyrestart(FLEX_STD istream *s) = 0;
71 
72  virtual int yylex() = 0;
73 
74  // Call yylex with new input/output sources.
75  int yylex(FLEX_STD istream *new_in, FLEX_STD ostream *new_out = 0)
76  {
77  switch_streams(new_in, new_out);
78  return yylex();
79  }
80 
81  // Switch to new input/output streams. A nil stream pointer
82  // indicates "keep the current one".
83  virtual void switch_streams(FLEX_STD istream *new_in = 0, FLEX_STD ostream *new_out = 0) = 0;
84 
85  int lineno() const { return yylineno; }
86  int debug() const { return yy_flex_debug; }
87  void set_debug(int flag) { yy_flex_debug = flag; }
88 protected:
89  char *yytext;
90  int yyleng;
91  int yylineno; // only maintained if you use %option yylineno
92  int yy_flex_debug; // only has effect with -d or "%option debug"
93 };
94 }
95 #endif // FLEXLEXER_H
96 
97 //#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce)
98 // had to disable the 'defined(yyFlexLexer)' part because it was causing duplicate class defs
99 #if !defined(yyFlexLexerOnce)
100 // Either this is the first time through (yyFlexLexerOnce not defined),
101 // or this is a repeated include to define a different flavor of
102 // yyFlexLexer, as discussed in the flex manual.
103 #define yyFlexLexerOnce
104 
105 extern "C++" {
106 
107 class yyFlexLexer : public FlexLexer
108 {
109 public:
110  // arg_yyin and arg_yyout default to the cin and cout, but we
111  // only make that assignment when initializing in yylex().
112  yyFlexLexer(FLEX_STD istream *arg_yyin = 0, FLEX_STD ostream *arg_yyout = 0);
113 
114  virtual ~yyFlexLexer();
115 
116  void yy_switch_to_buffer(struct yy_buffer_state *new_buffer);
117  struct yy_buffer_state *yy_create_buffer(FLEX_STD istream *s, int size);
118  void yy_delete_buffer(struct yy_buffer_state *b);
119  void yyrestart(FLEX_STD istream *s);
120 
121  void yypush_buffer_state(struct yy_buffer_state *new_buffer);
122  void yypop_buffer_state();
123 
124  virtual int yylex();
125  virtual void switch_streams(FLEX_STD istream *new_in, FLEX_STD ostream *new_out = 0);
126  virtual int yywrap();
127 
128 protected:
129  virtual size_t LexerInput(char *buf, size_t max_size);
130  virtual void LexerOutput(const char *buf, size_t size);
131  virtual void LexerError(const char *msg);
132 
133  void yyunput(int c, char *buf_ptr);
134  int yyinput();
135 
136  void yy_load_buffer_state();
137  void yy_init_buffer(struct yy_buffer_state *b, FLEX_STD istream *s);
138  void yy_flush_buffer(struct yy_buffer_state *b);
139 
140  int yy_start_stack_ptr;
141  int yy_start_stack_depth;
142  int *yy_start_stack;
143 
144  void yy_push_state(int new_state);
145  void yy_pop_state();
146  int yy_top_state();
147 
148  yy_state_type yy_get_previous_state();
149  yy_state_type yy_try_NUL_trans(yy_state_type current_state);
150  int yy_get_next_buffer();
151 
152  FLEX_STD istream *yyin; // input source for default LexerInput
153  FLEX_STD ostream *yyout; // output sink for default LexerOutput
154 
155  // yy_hold_char holds the character lost when yytext is formed.
156  char yy_hold_char;
157 
158  // Number of characters read into yy_ch_buf.
159  int yy_n_chars;
160 
161  // Points to current character in buffer.
162  char *yy_c_buf_p;
163 
164  int yy_init; // whether we need to initialize
165  int yy_start; // start state number
166 
167  // Flag which is used to allow yywrap()'s to do buffer switches
168  // instead of setting up a fresh yyin. A bit of a hack ...
169  int yy_did_buffer_switch_on_eof;
170 
174  void yyensure_buffer_stack(void);
175 
176  // The following are not always needed, but may be depending
177  // on use of certain flex features (like REJECT or yymore()).
178 
179  yy_state_type yy_last_accepting_state;
180  char *yy_last_accepting_cpos;
181 
182  yy_state_type *yy_state_buf;
183  yy_state_type *yy_state_ptr;
184 
185  char *yy_full_match;
186  int *yy_full_state;
187  int yy_full_lp;
188 
189  int yy_lp;
190  int yy_looking_for_trail_begin;
191 
192  int yy_more_flag;
193  int yy_more_len;
194  int yy_more_offset;
195  int yy_prev_more_offset;
196 };
197 }
198 
199 #endif // yyFlexLexer || ! yyFlexLexerOnce
struct yy_buffer_state ** yy_buffer_stack
Definition: FlexLexer.h:173
size_t yy_buffer_stack_top
Definition: FlexLexer.h:171
size_t yy_buffer_stack_max
Definition: FlexLexer.h:172
Definition: FlexLexer.h:61
Definition: apps/elftosb/common/options.cpp:61
Definition: elftosb_lexer.cpp:212
Definition: FlexLexer.h:107